我实际上正在使用Loader类从远程服务器获取图像。 我正在使用它作为工作,当它完成后我将它从内存中删除但是有一点泄漏。
要看到它,我正在使用侦察兵。在内存部分,Bitmap DisplayObjects是免费的,但Images部分不是。
当我查看侦察文档时,我发现Images部分是我正在加载的文件的压缩版本。
我应该怎样做才能释放这段记忆?
感谢
编辑2(忘记加载前的_): 以下是我为释放Loader所做的工作:
(_loader.content as Bitmap).bitmapData.dispose();
_loader.unload();
this.removeChild(_loader);
_loader = null;
编辑3: 我仍然需要帮助解决内存泄漏问题,谢谢
答案 0 :(得分:0)
使用Loader类时很容易出现内存泄漏。 要使垃圾收集器从内存中删除对象,必须遵循以下规则:
以下是使用Loader的一个小例子
var urlReq:URLRequest = new URLRequest("url here");
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
l.load(urlReq);
看起来很简单,不是吗? ;)我没有包含处理程序,因为它对这个例子并不重要。
现在让我们删除它:
l.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoaded);
//the LoaderInfo object is inside the Loader object, it needs to be free of listeners
//or it won't let the Loader object to be garbage collected
var content:DisplayObject = l.content; // save the loaded item
l = null; // make object NULL
现在应该在下一次垃圾收集器运行时从内存中删除加载器。只要确保你已经清除了所有的听众和参考文献。
希望有所帮助!