JVM参数 -XX:SurvivorRatio 笔记
1.JVM参数 -XX:SurvivorRatio 用于设置 新生代内存各区(End区域 和 Survivor区域【From幸存区 和To幸存区】)比值 ,JDK8默认值为-XX:survivorRatio=8
参考地址:https://www.oracle.com/java/technologies/javase/vmoptions-jsp.html
2.JVM参数 -XX:SurvivorRatio=8【End :S0:S1 = 8:1:1】,计算新生代各区内存公式
说明:【R:survivorRatio比例,Y:新生代空间大小】
End = (R * Y) /(R +1+1)
From = Y/(R+1+1)
To = Y/(R+1+1)
3.举例
设置新生代大小 -Xmn=1024M,则
End = (1024M * 8)/(8+1+1)=819.2M
Survivor= (1024M * 2)/(8+1+1)= 204.8M
4.新生成对象分配情况
新生成的对象被分配到End区,对象增多End空间不足时会触发MinorGC,GC后还存在存活对象,
存活对象则被复制到To Survivor区域,如果Survivor区空间不够(再进行一次GC或少次GC)后被移动到老年代中
5.设置-XX:SurvivorRatio=n 产生的影响
End区太小,容易被沾满,增加新生代的GC次数,频繁GC会降低整体JVM性能
End区太大,那么survivor区相应减小,失去了MinorGC的初衷