Java - 获取JVM堆快照文件教程(hprof文件)

叙述

OOM,全称“Out Of Memory”。当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。而 JVM dump 文件则是定位内存泄漏等 OOM 问题的关键证据,下面通过样例演示如果生成这个文件。

解决方案

让 JVM 碰到 OOM 场景时自动输出 dump 信息

我们可以添加 -XX:+HeapDumpOnOutOfMemoryError 参数开启“当堆内存空间溢出时输出堆的内存快照”功能,而 -XX:HeapDumpPath 参数则指定生成的堆转储存放位置。

//存放位置使用相对路径
nohup java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./ -jar test-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
 
//存放位置使用绝对路径
nohup java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/log/ -jar test-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &

这样当发生 OOM 时,指定目录下就会生成一个名为 java_pidxxxx.hprof 的文件,然后我们就可以使用 MAT 等工具打开这个文件进行分析了。

原文:Java - 获取JVM堆快照文件教程(hprof文件)

在运行时手动导出堆 Dump 文件

首先执行 jps 命令找到相应 java 进程的 pid:

原文:Java - 获取JVM堆快照文件教程(hprof文件)

接着使用 jmap 命令导出即可:

jmap -dump:format=b,file=/usr/local/test.hprof 6902
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值