8:1:1是兼顾对象生命周期、gc效率与内存连续性的最优新生代比例,其中eden占80%以容纳90%~98%朝生夕死对象,两个survivor各占10%支持复制算法、延缓晋升并平衡空间利用率。

8:1:1不是凑整数,而是围绕对象生命周期、GC效率和内存连续性三者反复权衡得出的实用结构。
匹配“朝生夕死”的对象分布
实测表明,约90%~98%的新建对象在第一次Minor GC时就已死亡。Eden占80%,刚好为这批短命对象提供充足分配空间,避免频繁触发GC;两个Survivor各占10%,只为承接那不到10%的幸存者——容量够用,又不浪费。
支撑复制算法并保证内存连续
复制算法要求目标区域必须为空。两个大小相等的Survivor区(S0和S1)交替充当“接收方”,每次GC将Eden + 当前From区的存活对象一次性复制到干净的To区,之后清空源区。
- 只有一个Survivor区时,无法清空自身,只能叠加存放,导致内存碎片和空间迅速耗尽
- 双Survivor机制确保始终有一个空区可用,复制后内存天然连续,无需整理
延缓晋升节奏,减轻老年代压力
对象每在Survivor间转移一次,年龄+1;默认晋升阈值为15。10%的Survivor空间能容纳多轮暂存,避免因空间不足被迫提前晋升。
- Survivor过小(如5%),存活对象装不下,直接进老年代,推高Full GC频率
- Survivor过大(如各20%),虽延长停留时间,但Eden被压缩,Minor GC变频繁
平衡空间利用率与GC吞吐
按8:1:1划分,新生代90%空间(Eden 80% + 一个空闲Survivor 10%)始终可用于新对象分配,空间利用高效;同时保留足够腾挪余地。
- 调大Survivor比例(如-XX:SurvivorRatio=4),适合中生命周期对象较多的应用
- 调大Eden比例(如-XX:SurvivorRatio=10),适合绝大多数对象都极短命的场景
- 通过-XX:+PrintGCDetails观察Survivor使用率,若常满或频繁晋升,说明比例需调整











