1. G1 GC 的 Region 模型与 Humongous 对象
G1 GC 的 Region 模型与 Humongous 对象如何工作?
- G1 Region 模型
- Humongous 对象定义
- 对 GC 的影响
G1 GC 把堆划分为等大小的 Region(默认 2048 个,大小由 G1HeapRegionSize 控制,通常 1-32MB),Region 在逻辑上分属新生代(Eden/Survivor)与老年代,且动态调整。对象在 Region 内分配。当对象大小超过 Region 的 50% 时,被视为 Humongous 对象,G1 会连续分配多个相邻 Region 存放(Humongous Region),这些 Region 不能与其他对象共享。Humongous 对象的影响:1) 浪费空间(Region 无法被小对象复用);2) 分配时需找连续 Region,堆碎片化可能导致过早 Full GC;3) 回收时整块回收,进入老年代后 Mixed GC 处理较慢。优化:避免超大对象、调整 Region 大小、监控 Humongous 分配。
Region 模型是 G1 的基础,Humongous 对象是例外。理解 Region 与 Humongous 的影响是 G1 调优的核心。