//核心代码,强制Flash Player调用垃圾回收
public function gc( ) : void {
var lc:LocalConnection = new LocalConnection();
try{
lc.connect("nothing");
lc.connect("nothing");
}catch(error : Error){
lc.close();
lc = null;
}
}
or
try{
new LocalConnection().connect("MoonSpirit");
new LocalConnection().connect("MoonSpirit");
}catch(error : Error){
//say something
}
PS.在做Flash应用开发时,一直有Flash占用大量内存的问题,主要集中在BitmapData(位图)处理方面。我今天在《ActionScript3天地会》的论坛看到这个有关gc回收的变通处理方法。因此收藏一下,以备往后用到。
另外关于为什么用LocalConnection方式的解释是
其实LocalConnection与垃圾回收是没有直接关系的.
这个做法的原理在于垃圾回收的时间尽管不确定,但是,只要程序抛出错误,就会运行一次垃圾回收器.这里使用LocalConnection两次connect同一个连接,第二次将发生运行时错误(#1034,LocalConnection已经连接上).于是就报错了.垃圾回收器自动运行.
至于为什么网上流传的版本都是LocalConnection,我个人觉得,可能是因为这个LocalConnection在AS3的应用中相对比较少出现,而且跟其他代码相比,这个运行时错误不容易与其他代码发生冲突.
本文转自:http://www.klstudio.com/post/192.html (代码稍作修改)