Java-性能调优-理解GC日志

Posted 甜菜波波

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-性能调优-理解GC日志相关的知识,希望对你有一定的参考价值。

1
2
3
4
[ ~]# cat gc.log.0 | grep ‘Full GC‘
1.652: [Full GC (System) 1.652: [CMS: 0K->21718K(262144K), 0.0837910 secs] 48398K->21718K(458752K), [CMS Perm : 16462K->16457K(21248K)], 0.0841650 secs] [Times: user=0.08 sys=0.00, real=0.08 secs]
 
664643.879: [GC 664643.879: [ParNew: 134434K->3202K(196608K), 0.0068030 secs] 327839K->196659K(458752K) icms_dc=0 , 0.0070080 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]

1.625, 664643.879为GC发生的时间,从Java虚拟机启动以来经过的秒数。

“[GC” 和 “[Full GC” 表示GC停顿类型,而不是区分新生代GC和老年代GC.

Full GC会发生Stop-The-World(STW)。如果调用System.gc()触发的Full GC,会显示“[Full GC(System)”  

[DefNew、[Tenured、[Perm表示GC发生的区域:

[DefNew:Serial收集器中新生代

[ParNew:ParNew收集器新生代

[PSYoungGen:Parallel Scanvenge收集器新生代

[CMS:CMS收集器老年代

[Tenured:Serial收集器老年代

[Perm,[CMS Perm:永久代

1
134434K->3202K(196608K) 含义: “GC前内存区已使用容量->GC后内存区已使用容量(该内存区域总容量)”
1
[Times: user=0.03 sys=0.00, real=0.01 secs] 含义:user,sys,real分别表示用户消耗CPU时间、内核消耗CPU时间、操作从开始到结束所经过的墙钟时间(wall clock time)<br>CPU时间与墙钟时间的区别:墙钟时间包括各种非运算等待时间,如IO阻塞等待,而CPU不包括这些时间。

 

以上是关于Java-性能调优-理解GC日志的主要内容,如果未能解决你的问题,请参考以下文章

Flink性能调优(一)

JVM调优日志解析分析与性能监控工具

Java GC 专家系列5:Java应用性能优化的原则

jvm性能调优实战 - 61常用的JVM调优网站

性能测试系列-java gc调优

Java GC 专家系列3:GC调优实践