前言
最近在排查公司线上BUG时,发现程序报OOM异常。在线上截取好了堆栈快照,然后下载hprof文件到本地用JProfiler或MAT打开,结果发现由于hprof有4G左右,JProfiler和MAT都无法打开hprof文件。
正文
在网上找到了MAT的解决方案,就是修改MAT目录下的MemoryAnalyzer.ini配置文件,修改为下列:
-vmargs
-Xmx4g
然后再去启动MAT,发现竟然能慢慢的读取hprof。
到这里,突然想到也可以调整JProfiler的启动文件的内存大小,然后就找到了jprofiler.vmoptions,修改配置如下:
-Xmx4036m
-Xss2m
然后使用jprofiler启动hprof文件,等些许分钟之后,就启动成功了。
然后就可以用JProfiler或者MAT去愉快的分析内存溢出的问题了。