为了更加直观的看到配置的JVM配置,可以在启动时配置jvm参数。
1
2
3
-XX:+PrintGC -Xms5m -Xmx20m -XX:+PrintGCDetails -XX:+PrintCommandLineFlags
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/Users/clear/dump
控制台输出如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
-XX:InitialHeapSize=5242880 -XX:MaxHeapSize=20971520
-XX:+PrintCommandLineFlags -XX:+PrintGC -XX:+PrintGCDetails
-XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
Heap
PSYoungGen total 2560K, used 2323K [0x00000007bf980000, 0x00000007bfc80000, 0x00000007c0000000)
eden space 2048K, 88% used [0x00000007bf980000,0x00000007bfb45390,0x00000007bfb80000)
from space 512K, 99% used [0x00000007bfc00000,0x00000007bfc7fc10,0x00000007bfc80000)
to space 512K, 0% used [0x00000007bfb80000,0x00000007bfb80000,0x00000007bfc00000)
ParOldGen total 4096K, used 527K [0x00000007bec00000, 0x00000007bf000000, 0x00000007bf980000)
object space 4096K, 12% used [0x00000007bec00000,0x00000007bec83dc8,0x00000007bf000000)
Metaspace used 3341K, capacity 4496K, committed 4864K, reserved 1056768K
class space used 369K, capacity 388K, committed 512K, reserved 1048576K
Full GC [PSYoungGen: 503K->0K(6144K)] [ParOldGen: 5615K->6036K(13824K)] 6119K->6036K(19968K), [Metaspace: 3336K->3336K(1056768K)], 0.0044680 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] GC [DefNew: 3324k->152k(3712k)] ,0.02 secs 3324k->152k(11904k), 0.0044680 secs
GC 和 FULL GC说明了停顿类型,如果是FULL,则说明发生了stop-the-world. DefNew,Tenured,Perm表示GC发生的区域,名称与使用的GC收集器相关。 3324k->152k(3712k):GC前该内存区域已使用容量->GC后该区域内存已使用容量(该内存区域总容量) 3324k->152k(11904k):GC前堆已使用容量->GC后堆已使用容量(堆总容量)
[Times: user=0.01 sys=0.00, real=0.00 secs] user是用户态消耗的CPU时间 sys是内核态消耗的CPU时间