SurvivorRatio作用讲解
Java堆从GC的角度, 可以分为 新生代和老年代。 新生代中可以分为伊甸园区(Eden区),From Survivor 区 (S0区)和 To Survivor 区 (S1区)。 占用的空间分别默认为 8:1:1
具体的内容可以看下图 一般默认用 8:1:1的比例, 而SurvivorRatio就是用于调整这个比例的。
使用如下的测试代码,
public class MyHelloGc {
public static void main(String[] args) throws InterruptedException {
System.out.println("***************HELLO GC");
}
}
项目启动时, 配置如下的jvm初始参数 -Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+UseSerialGC
运行程序后, 控制台打印如下, 可以看到eden区分配2752k, From 区 320k , to 区 320k .比例为8:1:1
-XX:SurvivorRatio 的值默认为8 , 如下的jvm参数调整为4 即 -XX:SurvivorRatio=4 ,
-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+UseSerialGC -XX:SurvivorRatio=4
再次运行程序, 可以看到控制台打印. eden区分配2368k, From 区512k , to 区 512k .比例为4:1:1