错误打开HPROF文件

尝试使用Memory Analyzer打开HPROF文件(由Debug.dumpHprofData创build)时出现以下exception:

 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) 

我如何解决这个问题?

谢谢

您从Android获取的hprof文件具有android特定的格式。 你应该把hprof文件从Android OS转换成标准的hprof格式。 为此,您可以使用位于AndroidSDK/tools/hprof-conv

例如:

 hprof-conv android.hprof mat.hprof 

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

编辑:hprof-conv可能位于AndroidSDK/platform-tools/在一些捆绑。

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

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

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

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