频繁 full gc 处理方式

线上服务 full gc 时,使用下面方式查询问题

  1. 首先我们要在Tomcat 正在进行 full gc 时能收到异常通知,然后用 ps 命令找到当前 tomcat 所在的进程号,如 ps -ef | grep leon-tomcat ,后面假设进程号为 XXX
  2. jmap -dump:live,format=b,file=dump.hprof XXXX 此命令可以把当前 tomcat 所占用的内存全部 dump 到二进制文件中,以备后面的分析使用。下载我们即将使用的关键软件,直接官网下载,下面是写此文时的最新版本,读者可以使用最新版。wget http://ftp.jaist.ac.jp/pub/eclipse/mat/1.9.1/rcp/MemoryAnalyzer-1.9.1.20190826-linux.gtk.x86_64.zip
    下载完之后需要解压,linux 可以使用 unzip 命令,很方便。一般jmap 出来的文件非常大,可以修改配置参数,按需要修改使用内存大小
<code>-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505
-vmargs
-Xms16g
-Xmx16g/<code>
  1. ./ParseHeapDump.sh ../today_heap_dump/dump.hprof org.eclipse.mat.api:suspects
    1. 还可以使用另外两个 参数
    2. org.eclipse.mat.api:overview
    3. org.eclipse.mat.api:top_components
  2. 最后,命令执行的结果里面,会有一个压缩文件,down 下来,里面是解析完的html 文件,就可以分析问题原因


频繁 full gc 处理方式


分享到:


相關文章: