mat用小内存解析超大堆快照的可行方法
mat用小内存解析超大堆快照的可行方法
写在前面的话1:服务器上的堆大小已经远超过我开发机的内存大小了,如果直接使用mat客户端来分析很快就会出现OOM的问题,这篇博客一定程度上可以解决这个问题
写在前面的话2:大部分同学一直都在使用mat的gui来做分析,但其实mat的gui只是增加来一个html预览功能,我们可以利用mat命令直接生成html,甚至我们还可以挂载成在线服务,以供其他人浏览,非常赞
命令
1 | /Applications/mat.app/Contents/Eclipse/ParseHeapDump.sh ~/Downloads/java_pidxxx.hprof org.eclipse.mat.api:suspects |
这个是基于macOS客户端来使用的,其他平台的mat命令位置得对应修改一下,当然如果你觉得分三次解析比较麻烦,你也可以直接一行完成
1 | /Applications/mat.app/Contents/Eclipse/ParseHeapDump.sh ~/Downloads/java_pidxxx.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components |
从我实际的使用体验来说,建议是分开解析,其实很多时候你只需要一个suspects
视图就足够了。
你需要注意的是mat在第一次解析的时候会生成很多的index索引类的文件,你得保证你的硬盘空间足够保存这部分的文件。
但mat完成以后,其实就是生成了多个html文件,你可以选择借助于nginx,挂载为在线地址,以供其他人在线预览,实际体验还是很不错的。