什么是垃圾收集过程中的引用处理

What is Reference Processing in garbage collection process

我正在阅读有关 G1 GC 的信息,并且在 Young 收集和并发标记循环步骤中都有称为 "Reference Processing" 和 "Reference Enq" 的进程。这些过程到底是什么?那里会发生什么?

引用处理是一个专门用于处理特殊引用对象(例如弱引用、终结器、JNI 引用)的阶段。

特殊参考有两个重要方面

  • 它们可能具有关于对象可达性的特殊语义(例如弱引用)
  • 由于 GC 工作,可能需要将引用对象添加到引用队列

在正常的 GC 阶段,引用对象排队等待 post 处理。

"Ref Proc" 阶段在主 GC 阶段之后开始,因此可以知道哪些对象存活下来,哪些对象没有存活下来,因此可以应用引用语义。

"Ref Enq" 随后将引用放入引用队列(引用队列是堆上的 Java 对象,通常用于实现由特殊引用启用的模式)。