JVM常用基础参数SurvivorRatio详解

SurvivorRatio作用讲解

Java堆从GC的角度, 可以分为 新生代和老年代。
新生代中可以分为伊甸园区(Eden区),From Survivor 区 (S0区)和 To Survivor 区 (S1区)。 占用的空间分别默认为 8:1:1

具体的内容可以看下图
JVM常用基础参数SurvivorRatio详解_第1张图片
一般默认用 8:1:1的比例, 而SurvivorRatio就是用于调整这个比例的。
JVM常用基础参数SurvivorRatio详解_第2张图片

SurvivorRatio代码实战

使用如下的测试代码,

public class MyHelloGc {

    public static void main(String[] args) throws InterruptedException {
        System.out.println("***************HELLO GC");

    }
}

项目启动时, 配置如下的jvm初始参数
-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+UseSerialGC
JVM常用基础参数SurvivorRatio详解_第3张图片
运行程序后, 控制台打印如下, 可以看到eden区分配2752k, From 区 320k , to 区 320k .比例为8:1:1
JVM常用基础参数SurvivorRatio详解_第4张图片
-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
JVM常用基础参数SurvivorRatio详解_第5张图片

你可能感兴趣的:(jvm)