我正在阅读有关 G1 GC 的内容,在 Young 收集和并发标记周期步骤中都有名为“Reference Processing”和“Reference Enq”的过程。这些过程到底是什么?那里会发生什么?
最佳答案
引用处理是专门用于处理特殊引用对象(例如弱引用、终结器、JNI 引用)的阶段。
特殊引用有两个重要方面
- 它们可能具有关于对象可达性的特殊语义(例如弱引用)
- 由于 GC 工作,可能需要将引用对象添加到引用队列
在正常的 GC 阶段,引用对象会排队等待后处理。
“Ref Proc”阶段在主 GC 阶段之后开始,因此知道哪些对象存活下来,哪些对象没有存活,因此可以应用引用语义。
“Ref Enq”随后完成,将引用放入引用队列(引用队列是堆上的 Java 对象,通常用于实现由特殊引用启用的模式)。
关于java - 垃圾收集过程中什么是引用处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56846977/