设置 VM 参数:
# -verbose:gc -XX:+PrintGCDetails : 打印GC信息
# -XX:+UseSerialGC : 设定使用Serial垃圾回收机制
# -Xms20M -Xmx20M : JVM内存大小
-verbose:gc -XX:+PrintGCDetails -XX:+UseSerialGC -Xms20M -Xmx20M
Java程式:
package com.xbb.test;
public class EdenDemo {
public static void main(String[] args) {
byte[] b1 = new byte[10 * 1024 * 1024];
byte[] b2 = new byte[5 * 1024 * 1024];
}
}
运行结果:
[0.287s][info ][gc,heap,exit ] Heap
[0.287s][info ][gc,heap,exit ] def new generation total 6144K, used 5907K [0x00000007bec00000, 0x00000007bf2a0000, 0x00000007bf2a0000)
[0.287s][info ][gc,heap,exit ] eden space 5504K, 95% used [0x00000007bec00000, 0x00000007bf124cb0, 0x00000007bf160000)
[0.287s][info ][gc,heap,exit ] from space 640K, 100% used [0x00000007bf200000, 0x00000007bf2a0000, 0x00000007bf2a0000)
[0.287s][info ][gc,heap,exit ] to space 640K, 0% used [0x00000007bf160000, 0x00000007bf160000, 0x00000007bf200000)
[0.287s][info ][gc,heap,exit ] tenured generation total 13696K, used 10476K [0x00000007bf2a0000, 0x00000007c0000000, 0x00000007c0000000)
[0.287s][info ][gc,heap,exit ] the space 13696K, 76% used [0x00000007bf2a0000, 0x00000007bfcdb340, 0x00000007bfcdb400, 0x00000007c0000000)
[0.287s][info ][gc,heap,exit ] Metaspace used 5147K, capacity 5192K, committed 5376K, reserved 1056768K
[0.287s][info ][gc,heap,exit ] class space used 465K, capacity 492K, committed 512K, reserved 1048576K
新生代和 = 5504+640+640=6784
- 新生代Eden占比 : 5504/6784 = 0.811
- 每个Survivor占比 : 640/6784 = 0.094
老年代和 = 13696
- 内存总和 = 6784+13696=20480k = 20MB
- 新生代占比 = 6784/20480=0.33
- 老年代占比 = 13696/20480=0.66