Я делал быстрые прототипы для игры, которую я собираюсь построить. одна из главных вещей, которую я хочу сделать, - это создание карты для карты типа плитки. При создании карты я использую большое количество оперативной памяти. Я строю карту как массив случайных целых чисел для моего теста. Когда я пытаюсь сгенерировать карты большого масштаба, выдает ошибку нехватки памяти:
Error: Error #1000: The system is out of memory.
Я уже решил, что вместо этого мог бы написать файл, чтобы решить эту проблему. но кто-нибудь знает фактический максимальный размер? Я пытался искать безрезультатно.
Монитор активности сообщает, что ADL использует около 500 МБ «реальной памяти» и около 700 МБ «виртуальной памяти». Кажется, что свойство System.privateMemory соответствует значению «реальной памяти».
В качестве примечания я разрабатываю в OSX Snow Leopard (64) с оперативной памятью 8 ГБ
EDIT:
Вот пример теста, который я запускаю
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);
Когда я запускаю этот скрипт из браузера, автономного отладчика или AIR, я получаю примерно одинаковые показания использования памяти (которые, как я знаю, меняются в любом случае). Однако постоянным является конечная длина байтового массива:
Браузер (Firefox): TM: 540413952 FM: 19116032 PM: 562573312 ЗНАЧЕНИЕ: 134217728
Автономный: TM: 540577792 FM: 1810432 PM: 545361920 BALENGTH: 134217728
ВОЗДУХ (2.6): TM: 5410816 FM: 1159168 PM: 551464960 ДЛИНА: 134217728
Мои методы тестирования могут быть не идеальными, хотя я не знаю, как выполнить более глубокое профилирование.