首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >垃圾收集器如何识别根

垃圾收集器如何识别根
EN

Stack Overflow用户
提问于 2012-01-11 08:36:27
回答 2查看 856关注 0票数 5

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-11 08:48:43

使用称为根集枚举的技术,所有根都将被识别。下面是Mark-sweep专利文档中的一句话。

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

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

尽管它是由.NET家伙写的,但我觉得Basics of mark sweep link会让你很好地理解它是如何工作的。

票数 2
EN

Stack Overflow用户

发布于 2012-01-11 08:41:29

“假定一组独特的对象是可访问的:这些对象称为根。通常,这些对象包括从调用堆栈中的任何位置引用的所有对象(即,当前正在调用的函数中的所有局部变量和参数)以及任何全局变量。

Wikipedia

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8812635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档