Eclipse 内存分析器MAT(三)获取heap dumpheap dump

1.获取出现OutOfMemoryError时对应的heap dump
通过在启动命令中追加如下jvm参数
-XX:+HeapDumpOnOutOfMemoryError
此时当应用程序出现OutOfMemoryError会在当前的工作目录下生成dump文件。可以追加如下jvm参数修改dump文件的路径
-XX:HeapDumpPath=/Users/chengaofeng/Downloads/dump

例如在eclipse中,通过如下方式追加

[img]http://dl2.iteye.com/upload/attachment/0130/7098/d143fe6e-fe35-338c-81a9-d90539501cd6.png[/img]

通过命令行启动程序时,在命令行中追加

java -server -Xmx40m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/chengaofeng/Downloads/dump -classpath <...>

2.通过可交互命令获取heap dump
在启动命令中追加如下jvm参数
-XX:+HeapDumpOnCtrlBreak
这样可在任意想获取dump文件时,执行按下CTRL + BREAK即可
3.通过jmap命令

jmap -dump:format=b,file=

4.通过JConsole
4.1 在运行你想分析的应用的机器上启动JConsole(Linux、Mac os系统安装好jdk后直接在命令行输入jconsole即可启动,window机器上到jdk安装目录下启动./bin/jconsole.exe),启动后在jconsole页面选择自己想要分析的应用

[img]http://dl2.iteye.com/upload/attachment/0130/7100/1c3c6360-bbcd-3fe3-8da4-3a055123bff7.png[/img]

4.2 接着选择MBean下com.sun.management.HotSpotDiagnostic操作中对应的dumpHeap,界面中有两个参数
[list]
[*]p0:dump file的全路径名如/Users/chengaofeng/Downloads/dump
[*]p1:一般情况下都设置成true,代表我们只关心当前存活的对象
[/list]

[img]http://dl2.iteye.com/upload/attachment/0130/7106/e4efd8ca-b67e-35fe-83b4-b1833cd7d59c.png[/img]

4.3 点击dumpHeap按钮,就会在对应的位置生成dump文件

[img]http://dl2.iteye.com/upload/attachment/0130/7108/0fceddc9-b237-3f7c-a19b-a8438b1e01ef.png[/img]

5.利用MAT获取

[img]http://dl2.iteye.com/upload/attachment/0130/7110/e7ee3cc6-db9b-33be-97b0-0f3c2fb03b16.png[/img]
之后选择对应的应用和文件保存地址即可

[img]http://dl2.iteye.com/upload/attachment/0130/7112/93aaf413-a52a-331d-9c38-87cbd4c9f332.png[/img]

你可能感兴趣的:(Eclipse)