无法使用Eclipse Memory Analyzer打开HPROF文件

时间:2009-12-14 18:23:26

标签: java heap dump

Eclipse Memory Analyzer仅在此消息中提示我:“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复杂,但确实有效。

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

2 个答案:

答案 0 :(得分:5)

我有同样的问题。添加标志“format = b”解决了问题。显然,Memory Analyzer只能读取二进制文件。

答案 1 :(得分:1)

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