1
A
回答
2
GC僅在堆滿時發生。 當垃圾收集器啓動 運行時,它會假定堆中的所有對象都是垃圾。 換句話說,它假設應用程序的根沒有任何 指向堆中的任何對象 。現在, 垃圾收集器開始步行 根,並構建從根到達的所有對象的圖形。例如,對於 示例,垃圾收集器可能會在 中找到一個全局變量,該變量指向堆中對象的 。
下圖顯示了幾個 分配的對象,其中 應用根1直接引用 對象OBJ1,OBJ2和應用 根2指OBJ4和obj5堆。這些對象全部爲 圖的一部分。當添加對象Obj2的 應用程序根目錄1時,收集程序 注意到此對象指的是 對象Obj7也被添加到 圖中。收集器繼續通過所有可到達對象 遞歸地步行 。
alt text http://www.c-sharpcorner.com/UploadFile/ankithakur/GCAlgorithm12222005224854PM/Images/GC.gif
...續here
這裏有一對夫婦的其他鏈接,讓你在垃圾收集閱讀:
1
這是GC的基本思路。
==========================================
每個應用程序都有一組根。根標識存儲位置,這些存儲位置引用託管堆上的對象或設置爲空的對象。
例如:
- 應用程序中的所有全局和靜態對象指針。 - 線程堆棧上的任何本地變量/參數對象指針。 - 包含指向託管堆中對象的指針的任何CPU寄存器。 - 指針從Freachable隊列
積極根的名單是由剛剛在時間(JIT)編譯器和公共語言運行庫維護,由垃圾回收算法訪問的對象
相關問題
- 1. 垃圾收集器
- 2. 垃圾收集
- 3. Renderscript和垃圾收集器
- 4. 垃圾收集器閃存
- 5. Node.js的垃圾收集器
- 6. 垃圾收集器vs池
- 7. .NET垃圾收集器
- 8. 垃圾收集器Flash Player
- 9. Jruby,垃圾收集器,Redis
- 10. SpiderMonkey垃圾收集器
- 11. 垃圾收集java
- 12. DoctrineCommonCache垃圾收集?
- 13. Java垃圾收集
- 14. C#垃圾收集
- 15. Java垃圾收集
- 16. WeakEvent垃圾收集
- 17. GWT垃圾收集
- 18. 垃圾收集YGCT和垃圾收集時間不斷上升
- 19. 垃圾收集器和彈簧集成
- 20. JavaScript - 垃圾收集器計時器?
- 21. 垃圾收集器如何確定對象是否是垃圾?
- 22. 垃圾收集器如何檢測垃圾?
- 23. 垃圾收集:將對象收集
- 24. asp.net垃圾回收通知
- 25. 垃圾收集是由
- 26. 垃圾收集提交git
- 27. 從垃圾收集日誌
- 28. 垃圾收集緩存WeakMaps
- 29. SoftReference太早收集垃圾
- 30. 不良垃圾收集