Eclipse 内存分析器MAT(三)获取heap dumpheap dump 博客分类: Eclipse eclipseMAT
程序员文章站
2024-03-22 22:38:46
...
1.获取出现OutOfMemoryError时对应的heap dump
通过在启动命令中追加如下jvm参数
-XX:+HeapDumpOnOutOfMemoryError
此时当应用程序出现OutOfMemoryError会在当前的工作目录下生成dump文件。可以追加如下jvm参数修改dump文件的路径
-XX:HeapDumpPath=/Users/chengaofeng/Downloads/dump
例如在eclipse中,通过如下方式追加
通过命令行启动程序时,在命令行中追加
2.通过可交互命令获取heap dump
在启动命令中追加如下jvm参数
-XX:+HeapDumpOnCtrlBreak
这样可在任意想获取dump文件时,执行按下CTRL + BREAK即可
3.通过jmap命令
4.通过JConsole
4.1 在运行你想分析的应用的机器上启动JConsole(Linux、Mac os系统安装好jdk后直接在命令行输入jconsole即可启动,window机器上到jdk安装目录下启动./bin/jconsole.exe),启动后在jconsole页面选择自己想要分析的应用
4.2 接着选择MBean下com.sun.management.HotSpotDiagnostic操作中对应的dumpHeap,界面中有两个参数
4.3 点击dumpHeap按钮,就会在对应的位置生成dump文件
5.利用MAT获取
之后选择对应的应用和文件保存地址即可
通过在启动命令中追加如下jvm参数
-XX:+HeapDumpOnOutOfMemoryError
此时当应用程序出现OutOfMemoryError会在当前的工作目录下生成dump文件。可以追加如下jvm参数修改dump文件的路径
-XX:HeapDumpPath=/Users/chengaofeng/Downloads/dump
例如在eclipse中,通过如下方式追加
通过命令行启动程序时,在命令行中追加
java -server -Xmx40m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/chengaofeng/Downloads/dump -classpath <...> <mainclass>
2.通过可交互命令获取heap dump
在启动命令中追加如下jvm参数
-XX:+HeapDumpOnCtrlBreak
这样可在任意想获取dump文件时,执行按下CTRL + BREAK即可
3.通过jmap命令
jmap -dump:format=b,file=<filename.hprof> <pid>
4.通过JConsole
4.1 在运行你想分析的应用的机器上启动JConsole(Linux、Mac os系统安装好jdk后直接在命令行输入jconsole即可启动,window机器上到jdk安装目录下启动./bin/jconsole.exe),启动后在jconsole页面选择自己想要分析的应用
4.2 接着选择MBean下com.sun.management.HotSpotDiagnostic操作中对应的dumpHeap,界面中有两个参数
- p0:dump file的全路径名如/Users/chengaofeng/Downloads/dump
- p1:一般情况下都设置成true,代表我们只关心当前存活的对象
4.3 点击dumpHeap按钮,就会在对应的位置生成dump文件
5.利用MAT获取
之后选择对应的应用和文件保存地址即可