flash – AS3中对象的内存使用和垃圾回收
发布时间:2020-12-15 07:25:47 所属栏目:百科 来源:网络整理
导读:我想知道关于Flash中垃圾收集的Object类型. 我知道在这种情况下,物品将为垃圾收集做好准备: // createvar ar:Array = [];var mc:MovieClip = new MovieClip();mc.addEventLisntener(blah,blah);ar.push(mc);addChild(mc);// kill gcar.splice(0,1);mc.remov
我想知道关于Flash中垃圾收集的Object类型.
我知道在这种情况下,物品将为垃圾收集做好准备: // create var ar:Array = []; var mc:MovieClip = new MovieClip(); mc.addEventLisntener(blah,blah); ar.push(mc); addChild(mc); // kill & gc ar.splice(0,1); mc.removeEventListener(blah,blah); removeChild(mc); 但是如何/将如何在下面的情况下收集垃圾. 假设我在我的类MartysMC中有一个函数,我通过以下方式解析一个Object: package { import flash.display.MovieClip; public class MartysMC extends MovieClip { /** * Updates this * @param obj An object containing key/value pairs to represent new property values */ public function update(obj:Object):void { var i:String; for(i in obj) { this[i] = obj[i]; } } } } 现在我像这样使用这个函数: var mmc:MartysMC = new MartysMC(); var dataObject:Object = { x: 10,y: 34,alpha: 0.6 }; mmc.update(dataObject); dataObject会发生什么?这会从这里收集垃圾吗?即便如此,这一行中的对象如何: mmc.update({x:15,y:18,name:"marty"}); 解决方法
要查看GC发生了什么,您可以使用
Dictionary,其弱引用设置为true,并使用您想要作为键的对象:
var d:Dictionary = new Dictionary(true) d[myObject] = whatever 当对象不再可用时,它将从字典中删除. 这里有一个基于你在wonderfl的例子的完整示例: 你很快就看到你的对象都被垃圾收集了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |