8:1:1是jvm新生代经典的eden与两个survivor区空间比例,它兼顾对象生命周期分布、复制算法需求、晋升控制及gc吞吐平衡:eden占80%满足短命对象分配,两个survivor各10%支撑复制算法并延缓晋升,避免碎片与full gc频发。

8:1:1 不是随意定的数字,而是围绕对象生命周期特征、GC效率与内存连续性三者权衡后形成的经典结构。
匹配“朝生夕死”的对象分布规律
实测表明,JVM中约90%以上的新建对象在第一次Minor GC时就已死亡。Eden区占新生代80%,恰好为这批短命对象提供充足且无需复制的分配空间;两个Survivor区各占10%,只为承接那不到10%的幸存者——既避免浪费,又留出足够缓冲来观察对象是否真能活过多次GC。
支撑复制算法并规避内存碎片
复制算法要求目标区域必须为空。两个大小相等的Survivor区(S0和S1)交替作为“接收方”,确保每次Minor GC都能将Eden + 当前From区的存活对象一次性复制到干净的To区,之后清空源区。若只有一个Survivor区,要么无法清空(导致碎片堆积),要么必须预留大量冗余空间(降低利用率)。
控制对象晋升节奏,减轻老年代压力
Survivor区的存在本身就是一个“年龄筛选器”。对象每经历一次Minor GC并在Survivor间转移,年龄+1;默认阈值为15,意味着至少要活过15次GC才进老年代。8:1:1的比例让Survivor有合理容量容纳多轮暂存,避免因空间不足被迫提前晋升——这直接减少了老年代的无效填充和Full GC触发频率。
兼顾空间利用率与GC吞吐平衡
按8:1:1划分,新生代90%的空间始终可用于新对象分配(Eden 80% + 一个空闲Survivor 10%),空间利用率高;同时保留了足够的复制腾挪余地。若调大Survivor比例(如4:1:1),虽利于中长生命周期对象,但Eden变小会抬高Minor GC频次;若取消Survivor,则所有存活对象直送老年代,系统很快陷入Full GC风暴。










