如果堆中有兩個對象相互引用,但它們沒有鏈接到任何引用變量,那麼這些對象是否有資格進行垃圾回收?帶隔離循環引用的垃圾收集行爲?
7
A
回答
20
是的,他們是。基本上,GC從「已知根」(靜態變量,alll線程中所有堆棧幀的局部變量)走到找到不能被垃圾收集的對象。如果無法從根目錄獲取對象,則有資格收集。
編輯:湯姆指出了這一點,我認爲是值得提升到答案本身:
從技術上講,靜態變量不是 根源 - 它們是通過由類加載器 引用的類 引用這些類被 所引用的對象引用,這些對象被引用的引用所引用的 。
的差異很可能是無關緊要的最的時間,但它是很好的瞭解:)
5
4
雙向飛碟上的錢的,像往常一樣。我只會補充一點,你描述的情況是引用計數(早期C++智能指針的標準策略)未被使用的原因。
相關問題
- 1. C#循環引用的垃圾收集
- 2. Xamarin垃圾收集和循環引用
- 3. 爪哇 - 循環垃圾收集
- 4. 循環引用的對象沒有得到垃圾收集
- 5. 大型循環引用和JVM垃圾收集器
- 6. 循環和垃圾回收
- 7. 垃圾收集
- 8. 不同的垃圾收集行爲
- 9. 的String.intern垃圾收集行爲()
- 10. jstat爲G1垃圾收集
- 11. 垃圾收集和引用C#
- 12. C#垃圾收集對象引用
- 13. 弱引用沒有收集垃圾?
- 14. C#垃圾收集器交叉引用
- 15. 關於垃圾收集行爲查詢
- 16. 垃圾收集的工作環境?
- 17. Javascript /垃圾回收器中的循環引用
- 18. 垃圾收集java
- 19. DoctrineCommonCache垃圾收集?
- 20. Java垃圾收集
- 21. 垃圾收集器
- 22. C#垃圾收集
- 23. Java垃圾收集
- 24. WeakEvent垃圾收集
- 25. GWT垃圾收集
- 26. mod_cluster&jboss:帶外垃圾收集?
- 27. 關於存在循環引用時.NET垃圾收集器的問題
- 28. 循環引用和垃圾回收在Python
- 29. 垃圾收集YGCT和垃圾收集時間不斷上升
- 30. Objective-C塊和垃圾收集環境
從技術上講,靜態變量不是根 - 它們被類加載器引用的類所引用,這些類由引用由根引用引用的對象引用的類引用。 – 2009-01-09 12:08:03