flash骇人的内存占用
sshong 发表于2009年5月4日 11:01:00 更新于2009年5月4日 11:10:00
在测试flash用Loader加载本地图片时的骇人结果。
结论如下:
在只有几个纯Loader加载图片的flash中,system.totalMemory属性与实际这些图片的总大小相当,但是实际flash player占用的内存占用至少是10倍于此。

也就是说如果你加载了100M的图片,那么至少该flash player的内存占用为1G,吐血!

附图如下:


测试代码如下:
var index = 0;
for (var i:int=29; i<69; i++)
{
    var loader:Loader = new Loader();

    loader.load(new URLRequest("P10007"+i+".JPG"));
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, oncom);
    loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onerror);
    addChild(loader);
}
txt.appendText(" 内存:" + flash.system.System.totalMemory/1024/1024 + "n");
addChild(txt);
function oncom(evt:Event):void
{
    index++;
    //flash.system.System.gc();
    txt.appendText("LOADER:" + index + " 内存:" + flash.system.System.totalMemory/1024/1024 + "n");
}
function onerror(evt:IOErrorEvent):void
{
    index++;
    //flash.system.System.gc();
    txt.appendText("LOADER:" + index + " 内存:" + flash.system.System.totalMemory/1024/1024 + "n");
}
标签:LoadertotalMemory内存分类:As3&Flex阅读:5535
评论
sshong2009年10月23日 12:58 回复
呵呵,恩,unload也没用的,这是flashplayer9的最大bug,在10里面新增了api:unloadAndStop才有效。
wangguorui892009年10月22日 20:27
这个问题我也遇到过。因为flex不会自将垃圾清理干净。你循环一次创建一个loader。只创建不清空内存就会一直存在。你用完了将loader.unloader掉。这样会减少点内存。
wangguorui892009年10月22日 20:27
这个问题我也遇到过。因为flex不会自将垃圾清理干净。你循环一次创建一个loader。只创建不清空内存就会一直存在。你用完了将loader.unloader掉。这样会减少点内存。
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅