heap dump方法
-XX:+HeapDumpBeforeFullGC -XX:HeapDumpPath=./java_pid<pid>.hprof
-XX:+HeapDumpBeforeFullGC full gc之前dump
-XX:+HeapDumpOnOutOfMemoryError 内存溢出dump
正在运行时 dump
jmap -dump:format=b,file=HeapDump.bin <pid>
-XX:+HeapDumpAfterFullGC Creates heap dump file after full GC
-XX:+HeapDumpBeforeFullGC Creates heap dump file before full GC
-XX:+HeapDumpOnOutOfMemoryError Creates heap dump in out-of-memory condition
-XX:HeapDumpPath=<path> Specifies path to save heap dumps
mat 安装
MAT支持两种安装方式,一种是“独立版本”,用户不必安装 EclipseIDE 环境,MAT 作为一个独立的 EclipseRCP 应用运行;
地址 http://www.eclipse.org/mat/downloads.php 单独下载
另一种是“插件版本”,也就是说MAT 可以作为 EclipseIDE 的一个插件,和Eclipse开发平台集成。
install new software
work with http://download.eclipse.org/mat/1.6/update-site/ add 一直下一步
dump文件太大的情况只能 使用 独立版本,在大内存机器运行 ,修改运行内存 大小
打开文件 MemoryAnalyzer.ini
修改
-Xmx60g
-Xms60g
运行脚本 ParseHeapDump.sh
运行命令
./ParseHeapDump.sh dump/java_dump.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components
dump/java_dump.hprof dump文件路径
一下是三个不同角度 内存分析报告
org.eclipse.mat.api:suspects 内存泄露嫌疑
org.eclipse.mat.api:overview 包括系统和内存概要
org.eclipse.mat.api:top_components 内存真有最大top组件
运行结束之后会生成几个zip 文件 ,即报告,拷贝到本地,打开index.html既可以查看分析结果
这个分析结果还是相对较少,如果不能满足只能把 dump文件和index拷贝到本地,用eclpse打开 ,因为索引已经存在,打开需要的内存大小不会无法想象
/_segments?pretty/ElasticHQ
with outgoing references 当前类引用的对象
with incoming references 引用当前类的对象
转载请注明:学时网 » jvm dump 大文件分析