JVM能否找到大型循环引用并收集对象?是否有任何官方文件/链接说明相同?或者您对垃圾收集大型循环引用有任何好/坏经验。
更新链接:http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html#997442
答案 0 :(得分:12)
从简单的角度来看,JVM使用Tracing Garbage Collection,Mark-and-Sweep。循环引用不会干扰这种算法的正确行为,因为它从“基础”级别开始,并通过引用来查找那些可以从那里到达的元素。任何无法到达的都可以被收集/释放。
值得注意的是,JVM垃圾收集器通常比这更复杂,有许多优化可以使事情变得更快。话虽这么说,标记和扫描算法的一般属性适用于它。
答案 1 :(得分:3)
是。 JVM的垃圾收集器可以处理循环引用。
JVM使用的垃圾收集器不是引用计数垃圾收集器。相反,它通过跟踪仍然可访问的引用(所有线程的堆栈或静态引用上的引用)来查找垃圾。