堆快照就警察破案,保留案发现场一样,将堆的使用情况给拍摄下来。
可以用作跟踪,分析堆的问题。
最近遇到一个线上的问题,es集群上百个节点,但是其中某个节点的JVM堆持续在83%以上。所以dump一个堆快照,来进行分析。
Jmap
jmap是一种打印运行JVM内存统计信息的工具。我们可以将其用于本地或远程进程。
要使用jmap捕获堆转储,我们需要使用dump选项:
jmap-dump:[live],格式=b,file=
除了这个选项,我们还应该指定几个参数:
live:如果设置,则只打印具有活动引用的对象,并丢弃准备进行垃圾收集的对象。此参数是可选的
format=b:指定转储文件将采用二进制格式
file:将写入转储的文件
pid:Java进程的id
例如:
jmap -dump:live,format=b,file=/tmp/dump.hprof 12587
我们可以通过使用jps命令轻松获得Java进程的pid。