本文介绍了动作的内存管理,垃圾收集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此博客(及其他)状态你应该清理对象时设置对象引用空的处置()内的方法。

This blog (and others) state that you should set object references to null inside your dispose() methods when cleaning up objects.

不过,ActionScript 3的(在Flash Player 9)使用标记和清理以清除循环引用你。所以我想知道:是真的有什么理由要空出你的对象引用

However, Actionscript 3 (with Flash Player 9) uses mark and sweep to clear out circular references for you. So I am wondering: is there really any reason to null out your object references?

推荐答案

我永远不会做 - 只要你做明显的:

I never do - as long as you do the obvious:

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

随后已使用的对象的内存可用于覆盖在任何时间。

Then the memory that was used by the object is available for overwriting at any time.

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

这篇关于动作的内存管理,垃圾收集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-18 06:55