【数媒在线课堂】回收过程二:老年代并发标记过程

2025-03-01ASPCMS社区 - fjmyhfvclm

️一、初始标记阶段:

  • 标记从根节点直接可达的对象。这个阶段是 STW 的,并且会触发一次年轻代 GC

️二、根区域扫描 (Root Region Scanning):

  • G1 GC 扫描 Survivor 区 ** 直接可达的老年代区域对象,** 并标记被引用的对象。️这一过程必须在 young GC 之前完成 (YoungGC 时,会动 Survivor 区,所以这一过程必须在 young GC 之前完成)

️三、并发标记 (Concurrent Marking):

  • 在整个堆中进行并发标记 (和应用程序并发执行), 此过程可能被 young GC 中断。在并发标记阶段,️若发现区域对象中的所有对象都是垃圾,那这个区域会被立即回收。同时,️并发标记过程中,会计算每个区域的对象活性 (区域中️存活对象的比例)。

️四、再次标记 (Remark):

  • 由于应用程序持续进行,需要修正上一次的标记结果。️是 STW 的。G1 中采用了比 CMS 更快的初始快照算法:snapshot 一 at 一 the 一 beginning (SATB).

️五、独占清理 (cleanup,STW):

  • 计算各个区域的存活对象和 GC 回收比例,并进行排序,识别可以混合回收的区域。为下阶段做铺垫。是 STW 的。(这个阶段并不会实际上去做垃圾的收集)

️六、并发清理阶段:

  • 识别并清理完全空闲的区域

全部评论