java 垃圾收集技术中使用的常见数据结构

Common data structures used in java Garbage Collection techniques

我多次遇到以下问题:

What data structures are used in garbage collection?

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

Edit: I understand that the question seems too broad since there are different kinds of garbage collection techniques. We could go with the commonly used garbage collection algorithms, like the ones found in most popular JVMs.

你的问题有点像问 "how does an operating system work?" GC 有许多不同的算法,它们使用不同的内部数据结构,具体取决于算法的工作方式。

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

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

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