gcore java_jmap转换gcore的dump文件

本文介绍了如何通过`gdb`生成Java进程的gcore快照,并利用`jmap`将其转换为hprof文件,以便于分析JVM内存情况。在过程中,强调了`jmap`和`java`命令必须与目标进程的JDK版本一致。最后,提到了使用`jvisualvm`工具来查看分析结果。
摘要由CSDN通过智能技术生成

找java进程

ps aux|grep java

yyy 4990 0.3 2.3 3098560 191312 ? Sl Aug29 16:11 /usr/xxx/jdk1.6.0_29/bin/java -Xms128m -Xmx768m -jar /usr/share/projectlibre/projectlibre.jar --silentlyFail true

使用gdb生成gcore快照文件

sudo gdb -q --pid=4990

【此处省略乱七八糟的输出内容】

......

0x00007ffc1672366b in pthread_join (threadid=140720663160576, thread_return=0x7fffe8470210) at pthread_join.c:92

92pthread_join.c: No such file or directory.

(gdb) generate-core-file

warning: target file /proc/4990/cmdline contained unexpected null characters

Saved corefile core.4990

(gdb) detach

Detaching from program: /usr/xxx/jdk1.6.0_29/bin/java, process 4990

(gdb) quit

命令解释:

gdb -q --pid=4990

--pid后面跟着的是jvm的进程id

(gdb) generate-core-file

这里调用命令生成gcore的dump文件

(gdb) detach

detach是用来断开与jvm的连接的

(gdb) quit

quit简单了,退出gdb模式

用jmap转换gcore的dump文件变成hprof

sudo /usr/xxx/jdk1.6.0_29/bin/jmap -dump:format=b,file=heap.hprof /usr/xxx/jdk1.6.0_29/bin/java core.4990

Attaching to core core.4990 from executable /usr/xxx/jdk1.6.0_29/bin/java, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 20.4-b02

Dumping heap to heap.hprof ...

Finding object size using Printezis bits and skipping over...

Heap dump file created

接着就生成了heap.hprof这个文件

注意:jmap、java等指令必须是与启动4990进程一致的版本才可以成功转换,否则还是会有问题。

可以使用jvisualvm打开 heap.hprof查看jvm的快照信息。

参考文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值