This blog(及其他)指出,清理对象时,应在dispose()方法内将对象引用设置为null。

但是,ActionScript 3(与Flash Player 9一起使用)使用mark and sweep来为您清除循环引用。所以我想知道:是否真的有任何理由要取消对象引用?

最佳答案

我从不做-只要您做显而易见的事情:

  • 中断对对象的所有引用(从数组中删除,将存储对象的变量设置为null,从显示列表中删除)
  • 删除所有事件侦听器,等等

  • 然后,对象所使用的内存可随时用于覆盖。
    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
    

    关于flash - Actionscript内存管理,垃圾回收,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5877674/

    10-12 12:59