JVM垃圾回收日志结构分析

我们在我们Server的gc log上经常看到下面的这个日志:

总结一下各个字段表达的是什么意思:  Young GC

Full GC:

top -H -P $PID  动态查看java线程的消耗情况

top -H -b -n 1 -p $PID 打印一次java线程情况

jstack $PID 打印当前运行的java线程栈信息(建议打印2,3次)

jstat -gcutil $PID <毫秒数>  动态的观察jvm内存各区情况,主要看下FGC与YGC的使用情况!

jmap -dump:format=b,file=./heapdump.bin $PID  dump java的堆栈信息,会影响线上的性能

一次CMS GC问题排查过程(理解原理+读懂GC日志)参见:http://iamzhongyong.iteye.com/blog/1989829

JVM优化目标:垃圾收集器中吞吐量低延迟(GC回收时间)这两个目标其实是存在相互竞争的矛盾,因为如果选择以吞吐量优先,那么降低内存回收的执行频率则是必然的,但这将会导致GC需要更长的暂停时间来执行内存回收。相反如果是选择以低延迟优先,那么为了降低每次执行内存回收时的暂停时间,只能够频繁地执行内存回收,但这又引起了新生代内存的缩减和导致程序吞吐量的下降。

原文地址:https://www.cnblogs.com/moonandstar08/p/4934548.html