java 生成hprof_Java应用问题定位系列——4种常见生成Heap Dump(堆快照)的方法

在分析内存溢出、内存泄漏等内存问题时,Heap dump是关键。那么有哪些方法可以生成Heeap dump呢?

HeapDumpOnOutOfMemoryError

这是最关键的一种,在所有生产环境上运行java应用,一定要加上这个flag。因为谁也不能保证这次上的版本么有内存问题,等到程序崩掉的时候,发现没有保留堆内存快照,那么就是没有保留案发现场,浪费了最好的分析问题的场景。

使用示例:

java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/tmp/heapdump.hprof -jar MyApp.jar

jcmd

jcmd是java 8引入的集大成的诊断工具。大家都应该尽量熟悉这个工具。

# 使用方式:

jcmd GC.heap_dump

# 示例:

jcmd 3873 GC.heap_dump /data/tmp/heapdump.hprof

jmap

jmap是传统的,也应该是当前大家最熟悉的生成堆快照的方法:

# 使用方法:

jmap -dump:format=b,file=

# 示例:

jmap -dump:live,format=b,file=/data/tmp/heapdump.hprof 3873

其中live的意思是只保留存活的对象。否则所有对象(包括已经被gc的对象)都会被输出,这在线上环境heap比较大,运行时间比较长的情况线下,会导致heap过大,没有必要。

JVisualV

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值