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


121

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

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)

我该如何解决?


在Windows系统下,你可能会发现这篇文章有帮助 stackoverflow.com/questions/14168485/...
sivi

Answers:


298

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

例如:

hprof-conv android.hprof mat.hprof

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

编辑:hprof-conv可能位于AndroidSDK/platform-tools/某些捆绑包下。


6
@inazaruk hprof-conv过去在单击转储按钮时自动运行,我不确定这是哪个版本的ADT停止工作,但可能是错误
smith324 2012年

1
@ smith234,对于DDMS中的按钮可能是正确的。但是,Debug.dumpHprofData() 使用时应手动进行转换。
inazaruk 2012年

尽管如此,我仍在tools目录中遇到“ permission否认”错误。我必须在该目录中使用chmod权限才能运行。
IgorGanapolsky

错别字:MAT的最新版本要求文件扩展名是hprof,而不是上面示例中的hpof。
greg7gkb 2012年

10
只是抬起头,我的hprof-conv在sdk \ platform-tools下,以防万一有人在sdk / tools下错过它
cjayem13

41

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

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

在Windows 7 64bit中,我无法使用hprof-conv工具进行转换,只是一无所获。因此,尝试了您的方法,它起作用了!我只需要安装Eclipse即可,现在它可以完美运行。谢谢
Paulius Vindzigelskis

3
最好进行更新以解释用户应该首先打开Eclipse首选项,然后从左侧菜单中选择Android,等等
Mick 2012年

1
在Luna中,我需要手动安装MAT:帮助->安装新软件:download.eclipse.org/mat/1.4/update-site
joecks 2014年

在我的Eclipse Mars.2(4.5.2)(Win 10)中,已经设置了“在Eclipse中打开”并安装了MAT,但是仍然出现“未知的HPROF版本”错误。我不得不用“ hprof-conv”转换文件。
Neph

7

hprof-conv 工具位置已更改。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.