如果堆上有两个互相引用的对象,但它们没有链接到任何引用变量,那么这些对象是否可以进行垃圾回收?
对,他们是。基本上,GC从“已知根”(静态变量,来自alll线程中所有堆栈帧的局部变量)中查找无法进行垃圾回收的对象。如果无法从根目录访问对象,则可以收集该对象。
编辑:汤姆指出了这一点,我认为值得将答案本身引入:
从技术上讲,静态变量不是根-它们是由类加载器所引用的类所引用的,而类加载器则是由对象所引用的类所引用的,而对象被根引用所引用。
在 大多数情况 下,这种差异可能无关紧要,但是很高兴知道:)