一.命令

-Xlog:gc 打印gc简要日志消息,java9之后统一该格式
-Xlog:gc:a.log 日志输出到指定文件
-XX:+PrintGCDetails (java8)
-Xlog:gc+heap=debug 每次gc都打印堆栈信息
-XX:+UseConcMarkSweepGC ParNew + CMS + Serial Old组合的收集器,CMS运行期间预留的内存无法满足程序需要,就会出现一次Concurrent Mode Failure失败,这时虚拟机将启动后备预案。临时启用Serial Old收集器来重新进行老年代的垃圾收集。

二.日志格式

image.png
[GC (Allocation Failure) [PSYoungGen: 2559K->512K(2560K)] 2706K->907K(9728K), 0.0012981 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

GC GC类型,YoungGC
[PSYoungGen: 2559K->512K(2560K)] 2559K—YGC前新生代内存占用

512K—YGC后新生代内存占用

2560K—新生代总共大小
2706K->907K(9728K) 2706K—YGC前JVM堆内存占用

907K—YGC后JVM堆内存占用

9728K—JVM堆总大小
0.0012981 secs YGC耗时

image.png
[Full GC (Ergonomics) [PSYoungGen: 1022K->328K(2048K)] [ParOldGen: 7135K->7133K(7168K)] 8158K->7462K(9216K), [Metaspace: 28425K->28425K(1075200K)], 0.0215068 secs] [Times: user=0.04 sys=0.00, real=0.02 secs]