Java中,如果对象A引用了对象B,对象B又直接或间接引用了对象A。(有一种情况是Hibernate中的主从对象双向关联)
那么,在没有其它对这两个对象的引用的情况下,这两个对象能否被GC回收?也就是说能否会产生内存泄露?
换个角度的问法就是:Java的GC是如何判断某个对象有没有被别的对象引用的?
现在的GC都采用分代收集的方式,不同的区采用不同的算法,大致有:复制,标记-清扫,标记-压缩,标记-清扫-压缩等。你可以参看:[url]http://speed847.iteye.com/blog/373278[/url]
[quote]
Java的GC是如何判断某个对象有没有被别的对象引用的?
[/quote]
现在的GC基本上不采用这种“引用计数法”的算法回收对象了,一个原因就是这种算法对循环引用无能为力。