2010-03-31 101 views
0

我只是遇到一个奇怪的问题:AS3:为什么会发生这种情况?

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

程序继续运行一段时间,在A = NULL,B = NULL。

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

我很困惑,谢谢!

回答

1

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

0

尝试

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

的()在类名的末尾调用构造函数,因此,你实际上有你的ClassA的。

+0

感谢您的回答,但这不是正确的答案... – 2010-03-31 14:57:46

相关问题