小编典典

具有隔离循环引用的垃圾回收行为?

java

如果堆上有两个互相引用的对象,但它们没有链接到任何引用变量,那么这些对象是否可以进行垃圾回收?


阅读 219

收藏
2020-11-19

共1个答案

小编典典

对,他们是。基本上,GC从“已知根”(静态变量,来自alll线程中所有堆栈帧的局部变量)中查找无法进行垃圾回收的对象。如果无法从根目录访问对象,则可以收集该对象。

编辑:汤姆指出了这一点,我认为值得将答案本身引入:

从技术上讲,静态变量不是根-它们是由类加载器所引用的类所引用的,而类加载器则是由对象所引用的类所引用的,而对象被根引用所引用。

大多数情况 下,这种差异可能无关紧要,但是很高兴知道:)

2020-11-19