2012-02-17 84 views

回答

11

從簡單的角度來看,JVM使用了一種Tracing Garbage Collection Mark-and-Sweep。循環引用不會干擾這種算法的正確行爲,因爲它從「基本」級開始,並通過引用找到可從那裏訪問的元素。任何無法到達的地方都可以收集/釋放。

值得注意的是,JVM垃圾收集器通常比這更復雜,通過許多優化使事情變得更快。這就是說,標記和掃描算法的一般屬性適用於它。

3

是。 JVM的垃圾收集器可以處理循環引用。

JVM使用的垃圾收集器不是引用計數垃圾收集器。相反,它通過從仍然可訪問的引用進行跟蹤(所有線程的堆棧或靜態引用中的引用)來查找垃圾。