5

Eclipse 内存分析器只提示我这条消息:“无效的HPROF文件头”。

堆栈转储:

    java.io.IOException: Invalid HPROF file header.
    at org.eclipse.mat.hprof.AbstractParser.readVersion(AbstractParser.java:135)
    at org.eclipse.mat.hprof.Pass1Parser.read(Pass1Parser.java:69)
    at org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:65)
    at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:184)
    at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:102)
    at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:114)
    at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:94)
    at org.eclipse.mat.ui.snapshot.ParseHeapDumpJob.run(ParseHeapDumpJob.java:54)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

HPROF 文件是在 Linux 机器上制作的。

HAT不起作用,IBM HeapAnalyzer很复杂,但确实有效。

我该怎么做才能让它发挥作用?

4

2 回答 2

4

我遇到过同样的问题。添加标志“format=b”解决了这个问题。显然,内存分析器只能读取二进制文件。

于 2011-04-25T17:05:36.580 回答
1

如果您使用的是 java 服务包装器,那么 JVM 很可能在完成堆转储写入之前就被杀死了。您可能希望为服务包装器设置一个属性,让 vm 有更多时间来完成堆转储。

于 2010-12-01T05:37:42.897 回答