AS3:为什么会这样?

时间:2010-03-31 14:47:45

标签: actionscript garbage-collection

我刚遇到一个奇怪的问题:

var a:ClassA = new ClassA;
var b:ClassA = a;

程序一直在运行,a = null,b = null。

该程序是一个复杂的程序,我相信没有任何部分会触及a,而b。我的问题是,运行时(垃圾收集器)会收集“a”的内存,然后将a和b分配给null吗?

我很困惑,谢谢!

2 个答案:

答案 0 :(得分:1)

垃圾收集器将回收此ClassA实例占用的内存,只有在不再引用它时才会回收。只要a OR b引用该内存位置,该实例就会保留。如果这些是局部变量,那么在函数/方法退出后,GC将在某个时刻拾取实例。如果这些是实例变量,那么它们将一直保留到收集定义类的实例之后。

答案 1 :(得分:0)

var a:ClassA = new ClassA();
var b:ClassA = a;

类名末尾的()调用构造函数,以便您实际拥有ClassA。