Я делал несколько быстрых прототипов для игры, которую я собираюсь построить. одна из основных вещей, которые я хочу сделать, это создание карты для карты типа плитки. При создании карты я заканчиваю использование большого количества барана. Я строю карту как массив случайных целых чисел для моего теста. Когда я пытаюсь создать карты крупномасштабной вспышки, я получаю ошибку из памяти:
Error: Error #1000: The system is out of memory.
Я уже понял, что могу написать в файл вместо этого, чтобы решить эту проблему. но кто-нибудь знает фактический максимальный размер? Я пробовал поиск безрезультатно.
Мониторинг активности сообщает, что ADL использует около 500 МБ "реальной памяти" и около 700 МБ "виртуальной памяти". Свойство System.privateMemory, похоже, соответствует значению "реальной памяти".
как побочная заметка, которую я разрабатываю в OSX Snow Leopard (64) с 8-гигабайтным ram
EDIT:
Здесь пример test я am running
var ba:ByteArray = new ByteArray();
for(var i:uint = 0; i<100000000; i++)
{
ba.writeInt(int(Math.random()*100));
}
trace("end", ba.length, System.totalMemory);
В этом примере выполняется нормально, после чего общее свойство памяти сообщает о 500 МБ используемой памяти. Теперь, увеличивая целевое значение до 400 000 000, я в конечном итоге получаю ошибку "из памяти".
Примечание. Тестирование во Flash CS5.5 с таймаутом, установленным на 120 секунд (тест не достигает этого времени)
EDIT:
Я создал лучший пример для тестирования:
var i:uint = 0;
var loopLength:Number = 500000000; // 500,000,000
var ba:ByteArray = new ByteArray();
for(i=0;i<loopLength;i++){
try{ba.writeInt(1);}
catch(e:Error){
MEM_TI.appendText(e.message);
break;
}
}
ba.position = 0;
MEM_TI.appendText("\nTM: "+System.totalMemory+" FM: "+System.freeMemory+" PM: "+System.privateMemory+" BALENGTH: "+ba.bytesAvailable/4);
Когда я запускаю этот script из браузера, автономный отладчик или AIR я получают примерно одинаковые показания использования памяти (которые, как я знаю, все равно меняются). Тем не менее, постоянная длина конечной длины массива байтов:
Браузер (Firefox): TM: 540413952 FM: 19116032 PM: 562573312 BALENGTH: 134217728
Автономный: TM: 540577792 FM: 1810432 PM: 545361920 BALENGTH: 134217728
AIR (2.6): TM: 5410816 FM: 1159168 PM: 551464960 BALENGTH: 134217728
Мои методы тестирования могут быть не идеальными, хотя я не знаю, как сделать более глубокое профилирование.