G1收集器的Region与SATB原理
G1(Garbage First)收集器打破了传统的分代物理隔离,请解释Region、SATB、Humongous对象和Remembered Set的工作原理。
回答
屠龙少年
Region:G1将堆划分为2048个大小相同(1M~32M)的Region,每个Region可独立扮演Eden/Survivor/Old角色,解决了碎片问题。
SATB(Snapshot-At-The-Beginning):并发标记开始时取对象图的快照,并发期间通过写前屏障记录引用变化,确保对象图中新增的存活对象不会漏标。替代CMS的增量更新。
Humongous对象:大小 > Region 50%的对象直接分配到H区(连续多个Region),避免了频繁的大对象复制。
Remembered Set(RSet):每个Region维护一个RSet,记录谁引用了本Region中的对象。RSet使得GC时无需扫描整个堆即可找到跨Region引用,避免全堆扫描。
停顿预测模型:G1根据历史数据预测停顿时间,选择回收收益最大的Region集合(CSet)。