我只是遇到一个奇怪的问题:AS3:为什么会发生这种情况?
var a:ClassA = new ClassA;
var b:ClassA = a;
程序继续运行一段时间,在A = NULL,B = NULL。
该程序是一个复杂的,我相信没有任何部分会触及a,b。我的问题是,运行时(垃圾回收器)将收集“a”的内存,然后将a和b分配给null?
我很困惑,谢谢!
我只是遇到一个奇怪的问题:AS3:为什么会发生这种情况?
var a:ClassA = new ClassA;
var b:ClassA = a;
程序继续运行一段时间,在A = NULL,B = NULL。
该程序是一个复杂的,我相信没有任何部分会触及a,b。我的问题是,运行时(垃圾回收器)将收集“a”的内存,然后将a和b分配给null?
我很困惑,谢谢!
垃圾收集器将回收这个ClassA
实例占用的内存,只有一次不再引用它。只要a
或b
引用该内存位置,实例将保留。如果这些是局部变量,那么在函数/方法退出后,GC会在某个时刻采集实例。如果这些是实例变量,那么它们将保留到定义类的实例被收集之后。
尝试
var a:ClassA = new ClassA();
var b:ClassA = a;
的()在类名的末尾调用构造函数,因此,你实际上有你的ClassA的。
感谢您的回答,但这不是正确的答案... – 2010-03-31 14:57:46