案例1

配置

-Xmx2000m -Xms2000m -XX:NewRatio=4 -XX:SurvivorRatio=4

jstat

bash-4.3$ jstat -gc 18
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
27136.0 21504.0  0.0    0.0   360448.0 281363.1 1638400.0   31395.9   59028.0 55343.1 7680.0 6936.1      7    0.258   3      0.384    0.641

年轻代大小:S0C+S1C+EC=409 088
年老代大小:OC=1638400
HEAP:409088+1638400=2 047 488=1.95G
NewRatio:1638400/409 088=4
SurvivorRatio:ec/sc=360448/27136=13

分析

在jdk8中自动开启了AdaptiveSizePolicy,故eden区和survivor区大小会自动调整,而年轻代和年老代大小是不会变的

案例2

-Xmx2000m -Xms2000m -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:-UseAdaptiveSizePolicy

jstat

S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
68096.0 68096.0 6288.2  0.0   273408.0 168008.0 1638400.0   31437.6   66048.0 61993.1 8448.0 7686.6      8    0.147   3      0.355    0.502

SurvivorRatio:ec/sc=273408/68096=4
当关闭自适应后SurvivorRatio的比例不在调整

jstat -gc 输出

S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间