自学内容网 自学内容网

[小白入门]curl下载的spring boot项目的headump文件,MAT和jvisualvm无法打开

问题

使用  curl --no-compressed http://ip:端口/actuator/heapdump -o heapdump.hprof 下载 文件后,使用MAT打开,一直在打开的界面不动,使用jvisualvm无法打开,使用jhat命令打开提示:

Reading from F:\heapdump...
java.io.IOException: Unrecognized magic number: 1208431
        at com.sun.tools.hat.internal.parser.Reader.readFile(Reader.java:94)
        at com.sun.tools.hat.Main.main(Main.java:159)

jhat命令: jhat F:\heapdump

分析原因

使用十六进制编辑器分别打开一个可以正常分析的dump文件和一个无法正常打开的文件,发现不同。

十六进制编辑器windows可以使用Editplus,打开文件时,选择【Hex viewer】

ubuntu可以使用xxd 命令为: xxd heapdump.hprof | more

上图中第一个红框为正常打一开,第二个为无法正常打开。

经查找原因,无法打开的为OpenJ9的JVM而非Hotspot jvm。

确认 JVM 类型和文件格式如下
检查应用运行的 JVM(HotSpot 或 OpenJ9)。可以通过以下命令查看:

java -version


如果是 OpenJ9,堆转储可能是 PHD 格式。尝试使用 IBM 的工具(如 IBM HeapAnalyzer)或确保分析工具支持 PHD 格式。
如果需要强制 HPROF 格式,确保使用 HotSpot JVM(例如 Oracle JDK 或 OpenJDK)。

因为之前一直使用的是HotSpot JVM 所以并不了解原来还有OpenJ9。

如果通过 Spring Boot Actuator 的 /actuator/heapdump 端点生成的堆转储文件开头是 "portable heap",说明你使用的 JVM 可能是 IBM J9 或 Eclipse OpenJ9,生成的堆转储文件是 PHD(Portable Heap Dump) 格式,而不是 HotSpot JVM 常见的 HPROF 格式。PHD 格式是 OpenJ9 特有的,设计上更轻量,但与 HPROF 格式不同,因此需要特定的工具或方法来解析和分析。

解决方案

Eclipse Memory Analyzer Tool (MAT)

MAT 是分析堆转储的常用工具,支持 PHD 格式(需要安装插件)。
下载并安装最新版本的 Eclipse MAT(https://www.eclipse.org/mat/)。
打开 MAT,选择 File -> Open Heap Dump。
选择你的 heapdump.phd 文件。
如果 MAT 提示文件格式不支持,确认是否安装了 IBM DTFJ 插件(见下方)。
安装 DTFJ 插件(如果需要):
PHD 文件解析依赖 IBM 的 Diagnostic Tool Framework for Java (DTFJ) 插件。
在 MAT 中:
转到 Help -> Install New Software。
添加 IBM DTFJ 更新站点:https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/runtimes/tools/dtfj/。
安装 DTFJ 插件并重启 MAT。
安装后,MAT 应能正确识别 PHD 文件。


原文地址:https://blog.csdn.net/c364902709/article/details/147227311

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!