flash - Adobe AIR 可以使用的最大内存量是多少?

标签 flash memory air limit max

我一直在为我正在考虑构建的游戏做一些快速原型(prototype)设计。我想做的主要事情之一是为瓦片类型 map 生成 map 。在生成 map 时,我最终使用了大量的内存。我正在将 map 构建为我的测试的随机整数数组。当我尝试生成大规模闪存的 map 时,出现内存不足错误:

Error: Error #1000: The system is out of memory.

我已经想到我可以改为写入文件来解决这个问题。但有人知道实际的最大尺寸吗?我试过四处寻找无济于事。

事件监视器报告 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);

这个例子运行良好,之后总内存属性报告使用了大约 500MB 的内存。 现在将目标值增加到 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);

当我从浏览器、独立调试器或 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

我的测试方法可能并不完美,虽然我不知道如何进行更深入的分析。

最佳答案

从 Windows 7 和 AIR 3.3 开始,Adobe AIR 应用程序的内存分配限制在 1GB 左右。一旦 Adob​​e AIR 变为 64 位,这将改变。 Adobe 计划对该平台进行 2 次不同的重写。第一次重写将在 2012 年底进行。这次重写将为 Flash、AIR 运行时添加多线程。第一次重写可能不会解决现有的内存分配问题和限制。但第二次改写肯定会在 2013 年推出,代号为“Next”。这次重写是“ActionScript 4.0”,其中包括 64 位运行时、内存分配增强、编程语言增强、新编译器以及性能的巨大改进。在此之前,请勿尝试分配超过 900MB 的 RAM,否则应用会在没有警告的情况下简单地崩溃。

关于flash - Adobe AIR 可以使用的最大内存量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6548272/

相关文章:

Adobe AIR 中的 CSS Flexbox?

actionscript-3 - 当我将子节点添加到空的展开节点时,树不刷新

Flash 标签顺序更改

javascript - Adobe Canvas HTML5 AS3 点击标签

javascript - nodejs 中的 RTMP 实现是可能的吗?

32位机器上的Java内存映射

flash - AS3 fileStream出现将文件读入内存

android - 如何使用 Adob​​e air - AS3 在静音模式下检测设备并与之交互

java - j2me 设备中的 "Maximum Heap Size = Unlimited"是什么意思?

iphone直接使用NSString会导致内存泄漏吗?