big*_*ill 12 air memory flash max limit
我一直在为我正在考虑建造的游戏做一些快速原型设计.我想要做的主要事情之一是为瓷砖类型地图生成地图.在生成地图时,我最终使用了大量的ram.我正在为我的测试构建一个随机整数数组.当我尝试生成大规模闪存的地图时,会给出内存不足错误:
Error: Error #1000: The system is out of memory.
Run Code Online (Sandbox Code Playgroud)
我已经想过我可以写一个文件来解决这个问题.但有人知道实际的最大尺寸吗?我试过四处寻找无济于事.
活动监视器报告ADL使用大约500MB"实际内存"和大约700MB"虚拟内存".System.privateMemory属性似乎与"实际内存"值匹配.
作为旁注,我正在使用8gb ram在OSX Snow Leopard(64)中进行开发
编辑:
这是我正在运行的示例测试
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);
Run Code Online (Sandbox Code Playgroud)
这个例子运行正常,之后总内存属性报告使用了大约500MB的ram.现在将目标值增加到400,000,000我最终收到"内存不足"错误.
注意:在Flash CS5.5中进行测试,超时设置为120秒(测试永远不会达到该时间)
编辑:
我已经创建了一个更好的测试示例:
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);
Run Code Online (Sandbox Code Playgroud)
当我从浏览器运行此脚本时,独立调试器或AIR i获得大致相同的内存使用量读数(我知道这种情况会有所不同).然而,常量是字节数组的最终长度:
浏览器(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
我的测试方法可能不完美,但我不知道如何进行更深入的分析.
没有提供任何细节,但我的直觉是,您遇到的问题不是缺乏内存(您的系统有足够的内存),而是算法不理想和/或有缺陷。您可能需要重新考虑生成地图的方式,并确保不会在某个地方陷入无限循环。
如果您发布更多详细信息(可能在另一个问题中),也许我们可以提供更多帮助。
| 归档时间: |
|
| 查看次数: |
6237 次 |
| 最近记录: |