加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

AS3 hack形式强制执行垃圾回收

发布时间:2020-12-15 18:37:31 所属栏目:百科 来源:网络整理
导读://核心代码,强制Flash Player调用垃圾回收 public function gc( ) : void { ? ?var lc:LocalConnection = new LocalConnection(); ? ?try{ ? ? ? ? lc.connect("nothing"); ? ?}catch(error : Error){ ? ? ? ? lc.close(); ? ? ? ? ? lc = null; ? ?} ? ? ?

//核心代码,强制Flash Player调用垃圾回收

public function gc( ) : void {

? ?var lc:LocalConnection = new LocalConnection();

? ?try{

? ? ? ? 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?(代码稍作修改)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读