我无法使用独立的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位服务器VM(内置20.0-b11,混合模式)
答案 0 :(得分:0)
这些堆转录是由于JBoss中的内存不足问题而导致的,其中采用了自动堆。我使用jmap取一个,它打开很好。我认为堆转储由于某种原因已被破坏。
答案 1 :(得分:0)
我怀疑你的堆转储文件已损坏。你是如何捕获堆转储文件的? This article概述了捕获堆转储的几种不同选项。 ' JMAP' JDK中存在的工具是捕获堆转储的一个很好的工具。您可以通过传递以下命令来调用它:
jmap -dump:format=b,file=<heap-dump-file-path> <process-id>
其中
heap-dump-file-path:是将堆转储写入的文件路径
process-id:是Java Process Id,应该捕获其堆转储
例:
jmap -dump:format = b,file = / opt / tmp / heapdump.bin 37320