sc4*_*c45 1 apache-flex actionscript-3
将图像加载到Flex(大小<100kb)会导致IE7内存每个图像增加一兆字节.这里发生了什么?这是我的代码 - 每个图像都有:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_Error, Retry);//retry it
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
function(event:Event):void
{
var bitmap:Bitmap = (e.target.loader as Loader).content as Bitmap;
// save it & Load next
});
loader.load(new URLRequst( imageURL ));
Run Code Online (Sandbox Code Playgroud)
这也发生在Chrome(2.0.172.33)和Firefox(3.0.10)中.如何减少内存使用量?谢谢!
我不认为每张图像增加大约1 Mb是必须担心的.你指出图像小于100 Kb,但你可能看错了数字:例如,我刚发送的640x480 jpg需要大约48 Kb,但如果你做数学,那么原始图像占用900 Kb(640*480*3 = 921,600).如果你使用透明度,则乘以4而不是3.事实是玩家必须解压缩图像才能操纵它.仅为这样的图像存储原始字节可能占用1兆或更多(取决于其大小).
而不是专注于减少每个图像的内存使用量(这无论如何都是粗略的估计),你可能最好在你完成图像后检查自己是在清理自己.不这样做可能会导致更严重的问题.我同意rhtx的观点,Flex Builder的Profiler是检测泄漏的好工具,如果您可以使用的话.在这种情况下,一个简单的测试可能是加载图像,获取内存快照,卸载图像,强制GC,拍摄第二个快照并将其与第一个快照进行比较.