一、介绍Dump
当Java程序发布之后, 如果出现问题,我们可以把问题发生时VM的状态转储到文件里,这种文件就是Dump文件,我们可以根据dump文件找出问题。这种文件必须用专用工具软件打开。
- 线程Dump:包含所有线程的运行状态。纯文本格式。
- 堆Dump:包含线程Dump,和所有堆对象的状态。堆转储文件,是java进程在某个时间内的快照。它在触发快照的时候保存了很多信息:java对象和类信息。二进制格式。
二、获取Java Dump方法
1. 使用Java虚拟机制作Dump
jdk启动加参数: -XX:+HeapDumpOnOutOfMemoryError
-XX:+HeapDumpBeforeFullGC
-XX:+HeapDumpAfterFullGC
-XX:HeapDumpPath=/data/gc/dump/gc.dump
2. 使用命令行制作Dump
jmap -dump:format=b,file=e.bin pid
示例:jmap -dump:live,format=b,file=/data/prod/receive/test2.dump 30627
3. 使用图形化工具制作Dump
使用JDK(1.6)自带的工具:Java VisualVM。或者第三方工具,如jprofiler等
如果觉得本篇文章帮助到了您,可以请我喝杯咖啡