这个博客 http://blogagic.com/163/flex-memory-management-and-memory-leaks#varref(和其他人)指出,在清理对象时,您应该在 dispose() 方法中将对象引用设置为 null。
但是,Actionscript 3(带有 Flash Player 9)使用标记和清除 http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html#articlecontentAdobe_numberedheader_1为您清除循环引用。所以我想知道:是否真的有理由取消对象引用?
我从来不这样做——只要你做了显而易见的事情:
- 中断对对象的所有引用(从数组中删除、将存储对象的变量设置为空、从显示列表中删除)
- 删除所有事件监听器等等
然后该对象使用的内存就可以随时被覆盖。
var ar:Array = [];
var mc:MovieClip = new MovieClip();
mc.addEventListener(MouseEvent.CLICK, pants);
ar[ar.length] = mc;
addChild(mc);
if(mc.parent) mc.parent.removeChild(mc); // not garbage collected
mc.removeEventListener(MouseEvent.CLICK, pants); // still not garbage collected
ar.splice(0, 1); // finally garbage collected
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)