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