这是一个面试问题,但我不太确定正确答案。假设我们有一些类,例如:
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会使用GC机制。它将如何处理这种情况?它会在运行时立即删除这两个实例,还是只对内存空间进行签名并将它们单独放置?如果我有 100 万个这样的实例形成一个循环并且没有外部引用怎么办?清理会让GC线程挂起吗?