该死的内存泄漏。。。谁帮解决一下
蓝色_冰点 2011-02-15 11:39:29 这个内存泄漏,来自Loader和SwfLoader
因为需要,做了个框架的swf,假设为a.swf
这个a.swf要通过Loader或SwfLoader加载另外一个模块b.swf,其中b.swf是可以独立运行的一个swf
我不用module的方式加载的原因,是因为还有未知的n个swf模块,如果用module的方式加载的话,这些模块和框架要在同一个工程下编译,以保证作为框架的a.swf中被编译了这n个swf模块所需要的资源(主要应该是皮肤)才会正常运行。flex3好象不存在这个问题,flex4有这样的现象,根据错误提示,应该是flex4的皮肤机制导制的
我已经成功通过Loader或SwfLoader加载新的模块,是以new ApplicationDomain()方式加载的。
如果是ApplicationDomain.currentDomain的话,会出现使用module方式加载模块时的错误一样,而且新加载的模块,不会出现加载进度条。new ApplicationDomain()是会出现加载进度条的。但这样模块就不能直接与框架通信,但问题也通过其它方式解决了。
主要问题来了,当Loader或SwfLoader加载模块后,运行结束,再通过unloadAndStop方法关闭,然而发现,所占用的内存并没有被释放。后来加上了System.gc();以及网上广为流传的hack方式进行内存回收,也就是
try{
(new LocalConnection).connect("foo");
(new LocalConnection).connect("foo");
}catch(e:*){}
均告无效。多次加载模块,内存一直往上升个不停
求个解决方法啊。。。。