-2

我多次遇到以下问题:

垃圾回收中使用了哪些数据结构?

我还没有找到很多关于 GC 算法中使用的数据结构的资源。

编辑:我知道这个问题似乎太宽泛了,因为有不同种类的垃圾收集技术。我们可以使用常用的垃圾收集算法,比如最流行的 JVM 中的那些。

4

1 回答 1

1

您的问题更像是在问“操作系统如何工作?” GC 有许多不同的算法,它们使用不同的内部数据结构,具体取决于算法的工作方式。

许多算法使用根集作为起点。这是可从您的应用程序线程直接访问的所有对象的列表。它是通过扫描线程堆栈、寄存器、静态变量等来创建的。GC 通常会处理根集以跟随指向其他对象(因此是可访问的)的链接并构建所有可访问对象的图。

还有其他数据结构,例如卡片表,但并非所有算法都使用这些数据结构。

你可能想选择一个特定的 GC 算法并研究它。

于 2019-08-25T11:07:15.633 回答