这是一个面试问题,但我不太确定正确答案。假设我们有一些类如下:
public class A {
public Object link;
public A() {
link = null;
}
}
接下来我们创建两个实例:
A a1 = new A();
A a2 = new A();
a1.link = a2;
a2.link = a1;
然后我们释放引用:
a1 = null;
a2 = null;
那么问题来了:JVM会如何使用垃圾回收机制呢?它会在运行时立即删除这两个实例,还是只是标记内存空间并将它们保留下来?如果我有100万个这样的实例形成一个循环,并且没有外部引用,那么清理会使GC线程挂起吗?