full gc分析
1、full gc会导致服务响应超时,full GC是stop the world级别的。此时虚拟机内所有的线程停止(当然除了GC,,,,),此时是无响应的,影响不用说了啊?所以为了提升用户体验,这个是应该避免的。无法避免是因为总会有存活能力强的对象(或者说大对象)进入老年代,老年代肯定是会满的(除非你内存无限大)。此时就必须触发full GC了。
2、当出现服务响应变慢之后,可以尝试分析问题所在的原因,查看日志和监控比如eagleye,如果发现有了full gc那么需要去定位原因,查看被回收的都是哪些对象。
3、常用的命令有:
ps -ef|grep java
获取线程id
然后jmap --heap pid(线程ID)
查看内存中堆的使用情况
或者直接dump内存情况进行分析。
导出整个JVM 中内存信息
jmap -dump:format=b,file=文件名 [pid]
通过集团工具或者MAT可以对dump出来的文件进行分析,其中包括了 shawllow heap 和retain heap两种,一种是对象本身的大小,另一种是对象引用的其它对象相加之和的大小。