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是复杂的,但确实有效。
我能做些什么才能让它发挥作用?
我遇到过同样的问题。添加标志“format = b”解决了问题。显然,Memory Analyzer只能读取二进制文件。
如果您正在使用Java服务包装器,那么很可能JVM在完成堆转储之前就已经被杀死了。您可能希望为服务包装器设置一个属性,该属性将使vm有更多时间来完成堆转储。