加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

闪存 – Adob??e AIR可以使用的最大内存量是多少?

发布时间:2020-12-15 07:33:24 所属栏目:百科 来源:网络整理
导读:我一直在做一些我正在考虑建立的游戏的快速原型.我想做的主要事情之一是地图生成的瓦片类型地图.在生成地图时,我最终使用大量的RAM.我正在建立地图作为一个随机整数数组进行测试.当我尝试生成大规模闪光的地图给我的内存不足错误: Error: Error #1000: The
我一直在做一些我正在考虑建立的游戏的快速原型.我想做的主要事情之一是地图生成的瓦片类型地图.在生成地图时,我最终使用大量的RAM.我正在建立地图作为一个随机整数数组进行测试.当我尝试生成大规模闪光的地图给我的内存不足错误:

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

我已经想到我可以写一个文件,而不是解决这个问题.但是有没有人知道实际的最大尺寸?我试过搜索没有效果.

活动监视器报告ADL正在使用大约500MB的“真实内存”和大约700MB的“虚拟内存”. System.privateMemory属性似乎匹配“实际内存”值.

作为一个旁注,我正在开发在OSX雪豹(64)与8gb ram

编辑:

这里是我正在运行的示例测试

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 ram使用.
现在,将目标值提高到4亿,我最终会收到“内存不足”错误.

注意:在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的内存分配.一旦Adobe AIR成为64位,这将会改变. Adobe计划对平台进行2次不同的重写.第一次重写将在2012年底之前进行.此重写将向Flash,AIR运行时添加多线程.这个第一次重写可能不会修复现有的内存分配问题和限制.但是,第二次重写将确定2013年将是代号为“下一步”的.这个重写是“ActionScript 4.0”,其中包括64位运行时,内存分配增强,编程语言增强,新编译器以及性能的巨大改进.在此之前,请勿尝试分配超过900MB的RAM,以免应用程序简单崩溃而无需警告.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读