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两种,一种是对象本身的大小,另一种是对象引用的其它对象相加之和的大小。

 

 

 

posted @ 2019-11-26 15:37  sliec  阅读(1275)  评论(0编辑  收藏  举报