该死的内存泄漏。。。谁帮解决一下

蓝色_冰点 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:*){}
均告无效。多次加载模块,内存一直往上升个不停

求个解决方法啊。。。。
...全文
170 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yijianxiangde100 2011-02-16
import flash.net.LocalConnection;
import flash.system.System;

/**
* GC 类,即时回收部使用的变量
*/
public class Memory
{
public function Memory()
{
//TO DO
}
/**
* 回收的方法
*/
public static function gc() : void
{
try
{
new LocalConnection().connect( 'foo' );
new LocalConnection().connect( 'foo' );
}
catch ( e : * ) {}
}
public static function get used() : Number
{
return System.totalMemory;
}
}
回复
蓝色_冰点 2011-02-16
[Quote=引用 3 楼 liuyyuns 的回复:]
看看别人总结的帖子吧,也许对你有帮助
http://www.cnblogs.com/sinsoul/archive/2010/12/05/1897047.html
[/Quote]
谢谢,此类的贴看得多了,没用的,如下:
[Quote=引用楼主 sharp_ice 的回复:]
主要问题来了,当Loader或SwfLoader加载模块后,运行结束,再通过unloadAndStop方法关闭,然而发现,所占用的内存并没有被释放。后来加上了System.gc();以及网上广为流传的hack方式进行内存回收,也就是
try{
(new LocalConnection).connect("foo");
(new LocalConnection).connect("foo");
}catch(e:*){}
均告无效。多次加载模块,内存一直往上升个不停
[/Quote]
回复
蓝色_冰点 2011-02-16
[Quote=引用 5 楼 yijianxiangde100 的回复:]
import flash.net.LocalConnection;
import flash.system.System;

/**
* GC 类,即时回收部使用的变量
*/
public class Memory
{
public function Memory()
{
//TO DO
}
/**
……
[/Quote]
我都说过了,这代码也不起作用。
或者在其它地方有用,但在Loader和SWFLoader身上没用
回复
jwxkk 2011-02-15
swf就是越跑越大...
回复
liuyyuns 2011-02-15
看看别人总结的帖子吧,也许对你有帮助
http://www.cnblogs.com/sinsoul/archive/2010/12/05/1897047.html
回复
xlgp2171 2011-02-15
有可能对象还处于可达状态
估计内存就消耗在Loader或SwfLoader里面
回复
相关推荐
发帖
Flex
创建于2007-12-13

4328

社区成员

多媒体/设计 Flex
申请成为版主
帖子事件
创建了帖子
2011-02-15 11:39
社区公告
暂无公告