OOM dump文件的几种方法
前言
在进行OOM分析或者线上经常FullGC时,需要我们dump内存文件分析,不同情况下需要使用不同的dump方法。
dump的几种方法
准备工作
获取程序的pid有两种方法:
- 执行
ps -ef | grep 程序名
- 在java/bin 文件中执行
jps
我们需要直接dump现在的内存对象。
1.可以使用jmap
工具:
Jmap命令是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。
jmap -dump:file=文件名 $pid
但是当疯狂FullGC时 dump出的文件可能无法分析。
2.使用jcmd
工具:
jcmd $pid GC.heap_dump 文件名
这个和方法1的不同是 这个工具只保留存活的对象。详见:链接