GC算法之G1-PART VIIII
SATB (snapshot-at-the-beginning)算法只是创建一个对象图,它是堆的逻辑“快照”。
SATB 标记保证在并发标记阶段开始时出现的所有垃圾对象都将被快照识别。
该技术保证在标记阶段开始时所有活动的对象都被标记和跟踪,在标记周期期间所做的任何新分配都被标记为活动的,因此不会被收集。
标记数据结构只包含两个位图:previous 和next。previous 位图保存着最后一个完整的标记信息。当前标记周期创建并更新next位图。
对应于previous 位图和next位图,每个G1 GC堆区域都有两个top-at-mark-start(TAMS)字段,分别称为previous TAMS(或PTAMS)和next TAMS(或NTAMS)。 TAMS 字段可用于识别标记周期中分配的对象。
在并发标记周期中分配的对象将在 NTAMS 之上(注释:这里的上跟图中的方向上不同,其实指的是NTAMS到top这一段)分配,并被视为是活动的。