如何 dump JVM 堆快照 用来分析

本文探讨如何通过jmap工具捕获JVM堆快照,解决线上Es集群中特定节点内存占用过高问题,以进行深入分析和问题定位。

堆快照就警察破案,保留案发现场一样,将堆的使用情况给拍摄下来。

可以用作跟踪,分析堆的问题。

最近遇到一个线上的问题,es集群上百个节点,但是其中某个节点的JVM堆持续在83%以上。所以dump一个堆快照,来进行分析。

Jmap
jmap是一种打印运行JVM内存统计信息的工具。我们可以将其用于本地或远程进程。

要使用jmap捕获堆转储,我们需要使用dump选项:

jmap-dump:[live],格式=b,file=<file path><pid>

除了这个选项,我们还应该指定几个参数:

live:如果设置,则只打印具有活动引用的对象,并丢弃准备进行垃圾收集的对象。此参数是可选的
format=b:指定转储文件将采用二进制格式
file:将写入转储的文件
pid:Java进程的id
例如:

jmap -dump:live,format=b,file=/tmp/dump.hprof 12587
我们可以通过使用jps命令轻松获得Java进程的pid。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值