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

Posted

技术标签:

【中文标题】打开 HPROF 文件时出错:IOException: Unknown HPROF Version【英文标题】:error opening HPROF file: IOException: Unknown HPROF Version 【发布时间】:2011-09-07 07:45:58 【问题描述】:

尝试使用内存分析器打开 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)

我该如何解决这个问题?

【问题讨论】:

在windows系统下你可能会发现这篇文章很有帮助***.com/questions/14168485/… 【参考方案1】:

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

例如:

hprof-conv android.hprof mat.hprof

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

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

【讨论】:

@inazaruk hprof-conv 曾经在单击转储按钮时自动运行,我不确定哪个 ADT 版本停止工作,但它可能是一个错误 @smith234,DDMS 中的按钮可能是真的。但是当使用Debug.dumpHprofData() 时,应该手动进行转换。 我在工具目录中收到“权限被拒绝”错误。我必须在该目录中更改权限才能使其正常工作。 错字:最新版本的 MAT 要求文件扩展名是 hprof,而不是上例中的 hpof。 提醒一下,我的 hprof-conv 在 sdk\platform-tools 下,以防有人在 sdk/tools 下错过它【参考方案2】:

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

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

【讨论】:

在 Windows 7 64bit 中,我无法使用 hprof-conv 工具进行转换,它什么也没有。所以尝试了你的方法,它的工作原理!我只需要将 MAT 安装到 eclipse 中,它现在就可以完美运行了。谢谢 更新解释一下用户应该先打开 Eclipse 首选项然后从左侧菜单中选择 Android 等可能会很好 在 Luna 中我需要手动安装 MAT:Help-> Install New Software: download.eclipse.org/mat/1.4/update-site 在我的 Eclipse Mars.2 (4.5.2) (Win 10) 中已设置“在 Eclipse 中打开”并安装了 MAT,但我仍然收到“未知 HPROF 版本”错误。我不得不用“hprof-conv”转换文件。【参考方案3】:

hprof-conv 工具位置已更改。

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

【讨论】:

以上是关于打开 HPROF 文件时出错:IOException: Unknown HPROF Version的主要内容,如果未能解决你的问题,请参考以下文章

java hprof文件如何打开

如何打开.hprof文件[重复]

如何打开hprof文件

Android android.view.InflateException Binary XML 文件第 16 行:膨胀类片段时出错

Memory Analyzer(MAT)打开android eclipse Dump内存文件出现错误

tomcat 没有在内存不足错误时生成 hprof 文件