GC是否会收集对象a和b,如果它们只相互引用?

时间:2012-06-02 09:34:08

标签: java garbage-collection

GC是否会收集对象a和b,如果它们只相互引用?你能帮助解释一下原因,或者给一个参考文档来解释这个逻辑。非常感谢

2 个答案:

答案 0 :(得分:6)

是的,如果GC没有更强的参考,他们将成为GC的候选人。

  

重要的是要注意,不仅任何强引用都会在内存中保存一个对象。 这些必须是从垃圾收集根链接的引用。 GC根是一类特殊的变量,包括:

  • 堆栈(任何线程)上的临时变量
  • 静态变量(来自任何类)
  • JNI原生代码的特殊引用

请参阅此文档(§ A.3.4 Unreachable and §A.4.2 Example GC with WeakReference)

答案 1 :(得分:3)

如果对象a和b彼此引用并且没有干扰其他对象,则它们形成孤立的对象岛。这种组也由垃圾收集器收集。看看this thread.