as3 中的垃圾收集

as3 中的垃圾收集

ID:34124159

大小:110.00 KB

页数:14页

时间:2019-03-03

as3 中的垃圾收集_第1页
as3 中的垃圾收集_第2页
as3 中的垃圾收集_第3页
as3 中的垃圾收集_第4页
as3 中的垃圾收集_第5页
资源描述:

《as3 中的垃圾收集》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、AS3中的垃圾收集最近在看GC(垃圾收集器)相关的东西,发现了几篇好文,虽然比较老了(06年的),但是很值得看;翻译了一下,这里的GC(垃圾收集器)主要是说flashplayer9的。偶英文比较糟糕,有非常少量的语句没有翻译,因为偶看不懂囧大家多担待,欢迎拍板砖^_^ 本文大部分是来自:http://www.gskinner.com/blog/archives/2006/06/as3_resource_ma.html;其中part1的译文来自:http://bbs.airia.cn/ActionScrip

2、t/thread-3656-1-1.aspx。其他为本人翻译大概集合了5篇文章。建议先将“前奏”看完,这样会对理解本文有很大的帮助。 前奏:理解delete关键字在我的一篇博文中howthegarbagecollectorworksinFlashPlayer9,塞德里克尼希米记(原名:CédricNéhémie,名字是google的囧)小盆友提了一个非常好的问题:为什么delete一个非动态类的属性时会抛异常呢?delete关键字是否是真的将对象从内存中删除了呢?提及到这个话题文档并不是很多,即使有也是非

3、常难找,大部分解答都是在根据相关的测试来猜测或推测。但是我的解释肯定是完全正确的(译者:突然想起疯狂的赛车里面的一句话:不烧不专业)。如果不是,请告诉我,我不想误导任何人(=。=!)我的理解是:delete关键词删除的不仅仅是变量的值,还包括实际变量的定义。无疑这样会释放其拥有的所有引用,借此将其交给GC(垃圾收集器)完成释放。也就是说:delete不会直接从内存删除引用所指向的对象。ActionScript2在AS2中,这种行为的效果并不明显,因为播放器不支持非动态类运行。这就意味着:删除一个变量的定义

4、等同于设置变量的值为undefined。正是因为这点,编译器永远也不会抛出与delete相关的异常。他们之间仅仅有一点点不同。例如:在AS2中试图去删除MovieClip实例onPress和onMouseOver事件的的处理函数,不论你删除哪一个操作都会返回一个"undefined",假如你设置其一为undefined(不用delete操作),你会发现直接设置为undefined的对象还是会出现对应操作的光标,而delete操作则不会出现。我灰常确信这点,当判断是否要现实光标时,播放器会确认onPress

5、事件处理函数的定义是否存在,而非根据其值(value)。另一方面AS3则支持非动态类的运行。所有的类都是事先封装好的,除非他们用explicitly来声明动态类。在运行时,你是不可以修改一个已经封装好的类或者其实例的成员。正因为如此,并且根据ECMAScript说明,delete仅仅是删除动态类的动态属性,不会删除非动态的变量(或方法)的。在ActionScript2.0中,你可以使用delete来删除一个对象或对象的属性。在ActionScript3.0中,delete操作符是遵循ECMAScript的

6、,这就意味着delete只能用在删除对象的动态属性上。如果你试图删除一个对象的非动态属性,他就会触发编译器的一个错误提示: 1189>Deleteremovesdynamicallydefinedpropertiesfromanobject.Declaredpropertiesofaclasscannotbedeleted.Thiserrorappearsonlywhenthecompilerisrunninginstrictmode.  在AS3中,delete将会返回一个布尔值来说明它是否删除成功,你

7、可以试试下面的代码:vart:*=newTimer(15);//notypingtogetaroundthecompilererrortrace(delete(t.delay));//tracesfalse,objectissealedsocan'tdeletetrace(t.delay);//15-deleteneveroccurred varo:*={fun:"stuff"};trace(delete(o.fun));//tracestrue,objectisdynamicsocandeletetra

8、ce(o.fun);//undefined-deleteoccurred 正题 part1目前我暂时在研究ActionScript3.0,它的能力让我很激动。它的原生执行速度带来诸多可能(此句原文Therawexecutionspeedbyitselfprovidessomanypossibilities.raw本意未加工,原始的,这里的意思是指引入AVM2之后,ActionScript3.0在执行速度上有了很大提高,所以使支

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。