打开 HPROF 文件时出错: IOException: Unknown HPROF Version

当我试图用内存分析器打开 HPROF 文件(由 Debug.dumpHprofData创建)时,我遇到了以下例外:

java.io.IOException: Unknown HPROF Version (JAVA PROFILE 1.0.3)
at org.eclipse.mat.hprof.AbstractParser.readVersion(AbstractParser.java:124)
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:203)
at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143)
at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:123)
at org.eclipse.mat.ui.snapshot.ParseHeapDumpJob.run(ParseHeapDumpJob.java:56)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

How do I resolve this?

36601 次浏览

从 Android 获得的 hprof文件具有 Android 特定的格式。您应该将取自 Android 操作系统的 hprof文件转换为标准的 hprof格式。为此,您可以使用位于 AndroidSDK/tools/hprof-convhprof-conv工具。

For example:

hprof-conv android.hprof mat.hprof

然后在内存分析器中打开 mat.hprof。

EDIT: hprof-conv might be located under AndroidSDK/platform-tools/ in some bundles.

如果您正在使用 Eclipse,只需更改以下内容:

  1. 打开首选项(从“窗口”菜单)
  2. 导航到 Android-> DDMS
  3. 将 HPROF 操作更改为“ Open in Eclipse”

hprof-conv刀具位置改变了。

它现在位于 AndroidSDK/platform-tools/hprof-conv