2012-01-11 34 views
2

标记清除垃圾回收器的第一个阶段是标记(查找)堆中的所有活动对象。要做到这一点,必须有一个起点或根,从所有标记开始的地方开始。 GC如何识别这些根源?垃圾收集器如何识别根

回答

2

使用所谓根集enumeratios所有根将被识别技术。下面是马克扫专利文献的句子。

在第一阶段中,可以识别对当前正在运行的程序中的对象的所有直接引用。这些参考被称为根,或者一起被称为根集,并且识别所有这些参考的过程可以被称为根集枚举。

这里是专利文献的链接。 Mark sweep patent link

尽管这是由.NET的家伙,我觉得Basics of mark sweep链接将让你很好的理解它是如何工作的。

2

“A杰出的组对象被假定为可到达的。这些被称为根部典型地,这些包括所有在调用栈中的任何地方引用的对象(即,所有的局部变量和参数的函数目前正在调用),和任何全局变量。

Wikipedia