我刚遇到一个奇怪的问题:
var a:ClassA = new ClassA;
var b:ClassA = a;
程序一直在运行,a = null,b = null。
该程序是一个复杂的程序,我相信没有任何部分会触及a,而b。我的问题是,运行时(垃圾收集器)会收集“a”的内存,然后将a和b分配给null吗?
我很困惑,谢谢!
答案 0 :(得分:1)
垃圾收集器将回收此ClassA
实例占用的内存,只有在不再引用它时才会回收。只要a
OR b
引用该内存位置,该实例就会保留。如果这些是局部变量,那么在函数/方法退出后,GC将在某个时刻拾取实例。如果这些是实例变量,那么它们将一直保留到收集定义类的实例之后。
答案 1 :(得分:0)
试
var a:ClassA = new ClassA();
var b:ClassA = a;
类名末尾的()调用构造函数,以便您实际拥有ClassA。