我只是想讓別人向我解釋一下,GC如何發現那些內存塊(在紅色區域中繪製)在引用計數大於0但是實際上無法訪問時是垃圾? Java垃圾回收器在訪問路徑被破壞時如何處理循環引用?
2
A
回答
12
有一組被認爲總是可以訪問的「根對象」:例如,線程引用,靜態變量,類引用。如果某些對象無法通過這些根對象的引用鏈接到達,則認爲它可用於GC,即使對該對象有一些引用。
0
GC算法的細節依賴於Java的實現,因此它取決於您的VM。但大多數虛擬機不使用引用計數。官方虛擬機甚至有幾種可配置的算法可用。所以這很難概括。
3
GarbageCollector基於Java內存模型工作。在java中可用的應用程序內存分爲兩部分:堆棧和堆棧。一個對象存儲在堆內存中,可以通過兩種方式訪問: - 對象可以具有存儲在堆棧內存中的引用變量。在這種情況下,可以通過使用它的引用變量直接訪問對象。
2)對象可以由任何其他對象被包含,並且不會有在堆棧存儲器中的任何引用。在這種情況下,只能使用該容器對象訪問此對象。所以如果容器對象是垃圾回收,那麼這個對象必須符合垃圾回收的條件。
雖然做垃圾回收GarbageCollector檢查一個對象是否是在棧提供任何引用直接或間接訪問的,如果是,那麼它不會收集這些對象否則做收集。
相關問題
- 1. 循環和垃圾回收
- 2. Xamarin垃圾收集和循環引用
- 3. C#循環引用的垃圾收集
- 4. Javascript /垃圾回收器中的循環引用
- 5. 測試訪問器垃圾回收
- 6. Java垃圾回收器
- 7. java垃圾回收
- 8. Java:垃圾回收
- 9. java - 垃圾回收
- 10. Java:垃圾回收
- 11. 循環引用和垃圾回收在Python
- 12. 在Spring批處理ThreadPoolTaskExecutor引用不被垃圾收集
- 13. 關於存在循環引用時.NET垃圾收集器的問題
- 14. 因垃圾對象引用而導致的java垃圾回收
- 15. 關於Java垃圾回收的採訪
- 16. 如何禁用Java垃圾收集器?
- 17. 大型循環引用和JVM垃圾收集器
- 18. PHP何時觸發垃圾回收器?
- 19. .net垃圾回收器何時運行?
- 20. 垃圾回收Java類
- 21. java的垃圾回收Runnable
- 22. Java垃圾回收5
- 23. Java垃圾回收混淆
- 24. 垃圾收集如何處理對象引用?
- 25. 什麼時候對象引用會被垃圾回收?
- 26. 通過創建循環鏈表來防止Java垃圾回收?
- 27. Java列表和垃圾回收器
- 28. Java EE:servlet容器中的垃圾回收
- 29. java中垃圾回收器的邏輯
- 30. Java垃圾收集問題