【问题标题】:Error Opening heap dump打开堆转储时出错
【发布时间】:2015-06-16 18:48:59
【问题描述】:

我无法使用独立的 eclipse 内存分析器或 visualVM 打开堆转储。我尝试了两个不同的 hprof 文件。 VisualVM 只是在加载堆转储时挂起,eclipse 内存分析器给了我以下错误。

Error opening heap dump 'java_pid15751.hprof'. Check the error log for further details.
Error opening heap dump 'java_pid15751.hprof'. Check the error log for further     details.
Not a HPROF heap dump (java.io.IOException)
Not a HPROF heap dump

我使用的是 Windows 7 32 位。应用服务器在 jboss 7.1.1 上,java 版本如下。 OpenJDK 运行时环境 (IcedTea6 1.10.6) (rhel-1.43.1.10.6.el6_2-x86_64) OpenJDK 64-Bit Server VM(build 20.0-b11,混合模式)

【问题讨论】:

  • 之前的回答可能会有所帮助:stackoverflow.com/questions/24868926/…
  • 感谢您查看 evictorr,但这不是 IBM Java 环境,所以我认为这不是问题。
  • 你能分享一下堆转储吗?能否贴出VisualVM的日志内容(Help->About->Logfile)?可以尝试在 64 位机器上打开 heapdump 吗?

标签: eclipse jboss visualvm heap-dump


【解决方案1】:

我怀疑您的堆转储文件已损坏。你是如何捕获堆转储文件的? This article 概述了捕获堆转储的几种不同选项。 JDK 中的“jmap”工具是捕获堆转储的好工具。您可以通过以下命令调用它:

  jmap -dump:format=b,file=<heap-dump-file-path> <process-id>

其中
heap-dump-file-path: 是将写入堆转储的文件路径。
process-id: 是Java 进程 ID,应捕获其堆转储

示例:
jmap -dump:format=b,file=/opt/tmp/heapdump.bin 37320

【讨论】:

    【解决方案2】:

    这些堆转储是由于 JBoss 中的内存不足问题导致的,其中自动堆被占用。我用jmap拍了一张,打开很好。我认为堆转储由于某种原因已损坏。

    【讨论】:

      猜你喜欢
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 2016-05-24
      • 1970-01-01
      相关资源
      最近更新 更多