JVM

GC日志

Posted by Clear Blog on May 26, 2017

为了更加直观的看到配置的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时间