mat工具记录一次full gc的过程

       最近两天线上的一个job服务持续的报full gc问题,运维的同事把dump文件给我们导了出来。2个多g,把自己使用mat 分析的过程记录下。

       下载mat工具,官网下载:https://www.eclipse.org/mat/

       自己的是mac,下载后解压。自己遇到个问题:解压后直接打开文件,会提示异常,需要去日志查询。日志显示的是需要在启动配置里面 添加-data,但是把哪个解压后的文件放到应用里面,启动是正常的。

       好了之后,打开运维给的dump文件,提示 文件过大。这个时候修改应用里面的mat工具。具体方法为:

     

 

   

 

 3.

 

  修改最大值后

-startup
../Eclipse/plugins/org.eclipse.equinox.launcher_1.5.700.v20200207-2156.jar
--launcher.library
../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.1100.v20190907-0426
-vmargs
-Xmx2048m
-Dorg.eclipse.swt.internal.carbon.smallFonts
-XstartOnFirstThread

 

把-Xmx1024 修改为 2048m.

 

 

好了之后,打开dump文件。大约需要几分钟

  

 

 打开后是上图所以,主要是看Dominator_tree

 

 

 

 

 

    发现有一个线程名wecaht-offcial-pool 开头的线程名字把heap占满了,点开任意一个如下图:

  

 

 发现是一个list对象占满了,然后找代码。。。

 

  最后发现这是一个跑公众号,查询关注信息的job。近期随着关注的人增多,程序里面处理时候对象太大了导致full gc频繁发生。

posted @ 2021-01-22 15:49  Doyourself!  阅读(485)  评论(0)    收藏  举报