一分钟系列: 读懂GC日志

一分钟系列: 读懂GC日志

开启GC日志

 -XX:+PrintGCDetails -Xloggc:  xxxx  
// 开启GC日志,xxxx表示GC日志输出的位置
// 虽然输出日志会有性能开销,相比日后观察JVM定位问题这点开销还是值得的。

GC日志解析

[GC (Allocation Failure) [PSYoungGen: 655360K->37885K(720896K)] 655360K->38008K(1302528K), 0.0713143 secs] [Times: user=0.06 sys=0.03, real=0.07 secs]

GC表示这是一次YGC的回收,只回收年轻代的内存;Allocation Failure表示是没有足够的内存(年轻代的内存)用来分配导致的一次垃圾回收;PSYoungGen表示这是一次年轻代的回收;655360K表示年轻代回收前这么大,37885K表示回收后是这么大,括号里的720896K表示年轻代的内存总共这么大;655360K表示堆的内存回收前这么大, 38008K表示这次垃圾回收后堆内存使用的大小,1302528K表示堆总共有这么大的内存,0.0713143 secs本次YGC耗费的时间(单位秒);user YGC用户耗时,sys YGC系统耗时, real YGC的墙中时间包括各种非运算的等待耗时。

[Full GC (Ergonomics) [PSYoungGen: 3209K->0K(779776K)] [ParOldGen: 581314K->397509K(786432K)] 584523K->397509K(1566208K), [Metaspace: 57616K->57442K(1103872K)], 0.7926506 secs] [Times: user=1.08 sys=0.14, real=0.79 secs]

Full GC表示本次垃圾收集发生了stop the world;Ergonomics表示这次JVM自身发起的一次fullGC;PSYoungGen表示是年轻代的GC,3209K年轻代回收前的大小,0K年轻代回收后的大小,779776K年轻代的总大小;ParOldGen表示是老年代的GC,581314K回收前的大小,397509K回收后的大小,786432K老年代的总大小,584523K堆回收前的大小,397509K堆回收后的大小,1566208K堆的总大小;Metaspace表示是元空间,57616K回收前,57442K回收后的大小,1103872K元空间的总大小;
0.7926506 secs 本次FullGC的时间;后面的user,sys,real和之前的解释一样。

发布了121 篇原创文章 · 获赞 56 · 访问量 167万+

猜你喜欢

转载自blog.csdn.net/u013565163/article/details/87483029