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. Renderscript和垃圾收集器
- 3. Node.js的垃圾收集器
- 4. .NET垃圾收集器
- 5. 垃圾收集器Flash Player
- 6. 垃圾收集器vs池
- 7. Jruby,垃圾收集器,Redis
- 8. 垃圾收集java
- 9. Java垃圾收集
- 10. Java垃圾收集
- 11. C#垃圾收集
- 12. GWT垃圾收集
- 13. DoctrineCommonCache垃圾收集?
- 14. JavaScript - 垃圾收集器计时器?
- 15. 垃圾收集器如何确定对象是否是垃圾?
- 16. asp.net垃圾回收通知
- 17. Objective-C的垃圾收集
- 18. 延迟垃圾收集?
- 19. 数量的垃圾收集
- 20. 了解Actionscript垃圾收集
- 21. Android - 检测垃圾收集
- 22. JavaScript垃圾收集暂停
- 23. 结构和垃圾收集
- 24. bash中的垃圾收集
- 25. 的Java newSingleThreadExecutor垃圾收集
- 26. 类垃圾收集任务
- 27. Java垃圾收集和空
- 28. lua垃圾收集错误?
- 29. 方法和垃圾收集
- 30. dalvik vm的垃圾收集