You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何分析Spring Boot Admin获取的无法正常打开的堆转储文件?

解决Spring Boot Admin获取的堆转储无法打开的问题

问题根源

Spring Boot Admin通过Actuator的/heapdump端点获取堆转储后,会自动对文件进行gzip压缩,这就是你拿到的50MB文件远小于直接从Actuator获取的180MB文件的原因。分析工具(Eclipse Memory Analyzer/VisualVM)无法直接解析压缩后的堆转储,才会抛出压缩引用相关的错误。

解决步骤

1. 解压堆转储文件

Spring Boot Admin导出的堆转储默认是gzip压缩格式,即使文件没有.gz后缀,也可以按以下方式解压:

  • 图形化工具:用7-Zip、WinRAR等工具直接打开并提取文件,得到后缀为.hprof的完整堆转储。
  • 命令行(Linux/macOS):若文件名为heapdump,先重命名为heapdump.hprof.gz,再执行:
    gzip -d heapdump.hprof.gz
    

解压后的文件大小会和直接从Actuator获取的接近,此时再用分析工具打开即可正常解析。

2. 验证JVM兼容性(可选)

如果解压后仍报错,检查生产环境与本地分析工具的JVM配置:

  • 确保本地使用64位JVM(生产环境Spring Boot应用基本都是64位,且默认启用Compressed Oops)。
  • 尽量保持JVM大版本一致(比如同是OpenJDK 11或17),避免因内存模型差异导致解析失败。

3. 直接从Actuator获取堆转储

若不想处理压缩文件,可直接调用生产环境的Actuator端点获取未压缩的堆转储:

  • 先确认生产环境配置中开启了heapdump端点并开放访问:
    management:
      endpoints:
        web:
          exposure:
            include: heapdump
      endpoint:
        heapdump:
          enabled: true
    
  • 通过HTTP请求下载:
    curl -X GET http://<生产环境地址>/actuator/heapdump -o heapdump.hprof
    
    替换<生产环境地址>为实际应用地址,若有认证需携带对应token或账号密码。

报错说明

你遇到的Detected compressed references, because with uncompressed 64-bit references the array at 0x60397eca8 would overlap the array at 0x60397ec90错误,本质是分析工具解析不完整的压缩文件时,内存地址计算出现冲突。解压后文件完整,该问题会自动消失。

内容的提问来源于stack exchange,提问作者Iman Ahrari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:22:41