如果我做一个定时器,如为什么不是这个垃圾收集
var timer:Timer = new Timer(50, 0);
timer.addEventListener(TimerEvent.TIMER, OnTimer);
timer.start();
,然后我的函数结束时,你会觉得这个计时器已经超出范围,并没有什么坚持着它的一个参考了。但是这个计时器仍然有效。
所以要么我很幸运,垃圾收集器还没有运行,或者有什么东西在坚持参考。如果是后者,我怎么知道它将被垃圾收集?
如果我做一个定时器,如为什么不是这个垃圾收集
var timer:Timer = new Timer(50, 0);
timer.addEventListener(TimerEvent.TIMER, OnTimer);
timer.start();
,然后我的函数结束时,你会觉得这个计时器已经超出范围,并没有什么坚持着它的一个参考了。但是这个计时器仍然有效。
所以要么我很幸运,垃圾收集器还没有运行,或者有什么东西在坚持参考。如果是后者,我怎么知道它将被垃圾收集?
计时器仍将运行,并将分派事件。只是声明它,你可以访问它(作为公共实例变量)的方式进行:
timer.stop();
timer.removeEventListener(TimerEvent.TIMER, OnTimer);
- 非常重要的事情在Flashtimer = null;
- 如果你真的需要释放内存,设置参考null啊!谢谢:) – 2013-02-18 20:14:41
欢迎您:) – vikingmaster 2013-02-18 20:16:09
您必须删除监听器http://redconservatory.com/blog/actionscript-timers-and-garbage-collection/ – asawyer 2013-02-18 20:00:00