【发布时间】:2009-07-22 10:12:13
【问题描述】:
谁能解释一下。
垃圾收集器的算法是什么?
垃圾收集器如何在后台工作?
【问题讨论】:
标签: asp.net garbage-collection
谁能解释一下。
垃圾收集器的算法是什么?
垃圾收集器如何在后台工作?
【问题讨论】:
标签: asp.net garbage-collection
GC 仅在堆满时发生。 垃圾收集器何时启动 运行,它假设 堆中的所有对象都是垃圾。 换句话说,它假设没有 应用程序的根指 堆中的任何对象。现在 垃圾收集器开始走 根和构建所有图 从根可以到达的对象。为了 例如,垃圾收集器可能 找到指向的全局变量 到堆中的一个对象。
下图显示了一个堆 几个分配的对象,其中 应用程序根 1 直接指 对象 Obj1、Obj2 和应用程序 根 2 指的是 Obj4 和 obj5。所有的 这些对象成为 图形。添加对象 Obj2 时 应用程序根 1,收集器 注意到这个对象指的是 对象 Obj7 也被添加到 图形。收藏家继续走 通过所有可达对象 递归。
...续here
这里有几个其他链接可以让您阅读垃圾收集:
【讨论】:
这是 GC 的基本思想。
============================================
每个应用程序都有一组根。根标识存储位置,这些位置引用托管堆上的对象或设置为空的对象。
例如:
-- 应用程序中的所有全局和静态对象指针。 -- 线程堆栈上的任何局部变量/参数对象指针。 -- 任何包含指向托管堆中对象的指针的 CPU 寄存器。 -- 指向 Freachable 队列中的对象的指针
活动根列表由即时 (JIT) 编译器和公共语言运行时维护,并且可供垃圾收集器的算法访问
【讨论】: