GC算法之G1-PART V
当 JVM 无法分配出 eden 区域时,即 eden 完全填满时,将触发年轻代收集。
将存活的对象从年轻代提升到老年代称为“tenuring”对象,因此年龄阈值称为“tenuring threshold”。
将对象提升到幸存者区域或老年代发生在PLAB(promotion local allocation buffer)中。对于幸存者区域和老年代,每个 GC 线程都有一个 PLAB。
任何特定对象经历的年轻代收集的次数总数称为该对象的“年龄”。 GC 在称为“年龄表”的表中维护年龄信息以及已提升到该年龄的对象的总大小。
JVM 自适应地为所有幸存的对象设置一个终身阈值。(它基于年龄表,幸存者的大小,TargetSurvivorRatio,MaxTenuringThreshold来确定)
一旦对象超过这个终身阈值,它们就会被提升进入老年代区域。
humongous 对象遵循一个单独且非常复杂的分配路径,这意味着humongous 对象分配路径不会利用任何针对分配或提升优化的年轻代 TLAB 和 PLAB。