打开HPROF文件时出错:IOException:未知的HPROF版本

时间:2011-06-02 18:58:03

标签: android memory-leaks dump

尝试使用Memory Analyzer打开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)

如何解决此问题?

3 个答案:

答案 0 :(得分:287)

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

例如:

AndroidSDK/tools/hprof-conv

然后在Memory Analyzer中打开mat.hprof。

编辑:hprof-conv可能位于某些捆绑包中的hprof-conv android.hprof mat.hprof 下。

答案 1 :(得分:41)

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

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

答案 2 :(得分:6)

hprof-conv工具位置发生了变化。

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