JVisualVM 手动生成 Java Core Dump

最近在研究 Java Core Dump 查看及使用问题,这里我采了JDK自带工具 jvisualvm ,这个工具可协助生成 Java Core Dump 文件

1, Java Core Dump 文件是什么 

Java Core Dump 文件呢,是针对 JVM 虚拟机发生致命问题或者 JVM 中运行的程序造成致命问题时,所产生的记录文件,通常会存在2个文件

1.1,Java Core 文件,线程记录文件,即 ThreadDump 文件

1.2,Head Dump 文件,Cpu. 内存,堆内存等信息记录文件

2,JVM 可以做什么

2.1,内存问题分析

2.2,线程问题分析

3,hs_err_pid.log 文件

在 JVM 出现异常宕机时,会生成 hs_err_pid1.log 日志文件记录, 文件名中 1 为JAVA运行的进程ID,该文件记录了 JVM 宕机时线程状态,过程状态等信息,可以用于基础判定程序问题

4,生成 Java Core Dump 文件

Java环境变量如果配置Ok的话, CMD 下执行 jvisualvm 命令, 会启动 jvisualvm 程序,此程序为 JVM 状态,内存,线程,Cpu等内容的监视工具

工具中,堆Dump 可生成 Head Dump 文件,文件格式为 .hprof

线程Dump,可生成 Java Core 文件,也就是 ThreadDump 文件,文件格式为 .tdump

此时,Java Core Dump 文件生成完毕

5, Java Core Dump 文件图形化查看工具

生成的 Java Core Dump 的两个文件查看,分别需要使用到2个不同的工具

Jac 工具《IBM Thread and Monitor Dump Analyzer for Java》:用于查看 ThreadDump 文件内容, Jac下载地址

Ha 工具《IBM HeapAnalyzer》:用于查看 HeadDump 文件内容, Ha下载地址

Jac 下载后的文件名 jacxxx.jar, xxx为当前jac工具版本号

Ha 下载后的文件名 haxxx.jar, xxx为当前jac工具版本号

java -jar jacxxx.jar/haxxx.jar 来启动2个不同的工具,并导入对应的文件即可

图例:

6,手动生成 ThreadDump 文件,目前未找到好的替代方法

替代方案1:直接kill进程,生成 ThreadDump 文件

替代方案2
6.1, 手动生成文件

 /lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/bin/jstack > 【存储 ThreadDump 文件.txt】 【进程ID】

6.2, 文件查看  在线查看器

7,手动生成 HeadDump 文件

手动生成HeadDump文件呢,需要使用到 jmap 命令

7.1,第一步,查看 java 程序运行进程编号

ps -ef | grep java

7.2,第二步,执行命令生成文件

jmap -dump:format=b,file=【存储 HeadDump 文件】 【进程ID】

例:

jmap -dump:format=b,file=serviceDump.dat 1

7.3,第三步,使用 haxxx.jar 工具打开 HeadDump 文件即可查看

对于Java性能分析呢,不止 JVisualVM  一种工具, 还有其他很多工具及插件可以使用

当Java虚拟机报错,或异常退出时,Linux 系统也会自动记录一个 Core Demp 的文件,Linux系统默认是未开启的,如果有需要,可以自行了解一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值