我测试了一些jvm参数以显示GC日志,并发现了一些我不希望的细节,也许是我错了?
public class EdenDemo {
private static final int _1MB = 1024 * 1024;
/**
* vm arguments:-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
*/
public static void testAllocation(){
byte[] allocation1,allocation2,allocation3,allocation4;
allocation1 = new byte[2 * _1MB];
allocation2 = new byte[2 * _1MB];
allocation3 = new byte[2 * _1MB];
allocation4 = new byte[4 * _1MB];
}
public static void main(String[] args) {
testAllocation();
}
}
jvm参数
-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+ PrintGCDetails -XX:SurvivorRatio = 8
gc日志
[GC(分配失败)[PSYoungGen:6794K-> 990K(9216K)] 6794K-> 5094K(19456K),0.0041458秒] [时间:user = 0.00 sys = 0.00, real = 0.00 secs]堆PSYoungGen总计9216K,已用7372K [0x00000000ff600000、0x0000000100000000、0x0000000100000000)伊甸园 空间8192K,已使用77% [0x00000000ff600000,0x00000000ffc3b718,0x00000000ffe00000)来自 空间1024K,已使用96% [0x00000000ffe00000,0x00000000ffef7910,0x00000000fff00000)到
空间1024K,已使用0% [0x00000000fff00000,0x00000000fff00000,0x0000000100000000)ParOldGen 总计10240K,已用4104K [0x00000000fec00000,0x00000000ff600000, 0x00000000ff600000)对象空间10240K,已使用40% [0x00000000fec00000,0x00000000ff002020,0x00000000ff600000)元空间 二手3244K,容量4496K,已提交4864K,保留1056768K类 已用空间350K,容量388K,已提交512K,已预留1048576K
为什么PSYoungGen空间大小是9216k(9M)而不是10M? 我已经设置了“ -Xmn 10M”