为什么不收集这些垃圾

时间:2013-02-18 19:57:53

标签: actionscript-3

如果我制作一个计时器,如

var timer:Timer = new Timer(50, 0);
timer.addEventListener(TimerEvent.TIMER, OnTimer);
timer.start();

然后我的函数结束了,你会认为这个计时器已超出范围,并且没有任何东西继续引用它。但是这个计时器仍然有效。

所以要么我很幸运,垃圾收集器还没有运行,或者某些东西正在坚持参考。如果是后者那么我怎么知道它会被垃圾收集?

1 个答案:

答案 0 :(得分:2)

计时器仍然会运行并将调度事件。只需将其声明为可以访问它的方式(作为公共实例变量)并执行:

  • timer.stop();
  • timer.removeEventListener(TimerEvent.TIMER, OnTimer); - Flash非常重要
  • timer = null; - 如果你真的需要释放内存,请将引用设置为null