我對Java中垃圾收集的工作方式有點困惑。什麼觸發java垃圾收集器
我得到一個對象有資格進行垃圾回收時沒有更多的實時引用,但如果它有活動對象的引用呢?
可以說我有節點的集合,再次引用多個節點
List
1 -> Node a -> Node b
2 -> Node c -> Node d
3 -> Node d -> Node c
4 -> Node e
5
現在,如果我刪除列表,節點C d和e應該被垃圾收集。節點e不再有對它的引用,並且節點c和d具有循環引用。
但是Node a呢?它會被垃圾收集?
無論節點b是否有外部活動引用,它會不同嗎?說如果節點b從一個不同的地方引用它,這會使節點停留在內存中嗎?
可以收集任何沒有來自線程根的強*參考的對象。這意味着兩個對象可以相互引用,但會被收集。你可以對對象有一個弱引用,但它仍然可以被清理。 –