如何将Android的堆转储文件转换为Eclipse格式

19

我试图分析一个让我疯狂了数周的内存泄漏问题,我发现了一个名叫 MAT 的Eclipse工具可以帮助你找出问题所在。问题是,我找到的每一个教程都说我需要将文件格式从dalvik转换为 HPROF 格式,但是没有一个教程真正解释如何操作,我只能看到类似这样的含糊不清的说明:

现在你得到的文件并不符合“标准”的Sun .hprof格式,而是以Dalvik自己的格式编写的,你需要进行转换:

hprof-conv heap-dump-tm-pid.hprof 4mat.hprof

这到底意味着什么? 我该点击什么? 去哪里? 我完全迷失和沮丧了。任何帮助都会对我有很大帮助,谢谢。

2个回答

35
听起来您需要使用位于[Android-SDK]\platform-tools目录下的hprof-conv工具。

在Windows上操作:

  1. 按下WINKEY+R键,输入cmd

  2. 输入:

    cd "C:\android-sdk\platform-tools" (或者包含您的Android sdk的任何目录)

  3. 假设Dalvik文件位于桌面上(我只是猜测目录),输入:

    hprof-conv "C:\Users\Edmund\Desktop\heap-dump-tm-pid.hprof" "C:\Users\Edmund\Desktop\4mat.hprof"

  4. 这将生成名为4mat.hprof的标准格式HPROF文件可供使用


我可能需要一个合法的步骤指南,告诉我在这个过程中该做什么。 - Edmund Rojas
你现在不在工具目录中。学习如何使用命令提示符。 - Oleg Vaskevich
现在我遇到了一个“错误:读取输入失败”的问题,这太难了,Android需要找到一种更简单的方法来解决这个问题。 - Edmund Rojas
好的,我尽力帮忙了。根据来源,这个错误看起来像是输入文件有问题。这篇文章提供了人们尝试过的解决方法,现在你知道如何运行hprof-conv工具了,希望你能让它正常工作。 - Oleg Vaskevich
感谢您的帮助,非常感激! - Edmund Rojas
显示剩余5条评论

3

需要说明的是:您不需要使用hprof-conv显式地转换.hprof文件。 MAT会自动为您执行此操作,就像这里描述的那样。在Eclipse中,

  1. 打开首选项窗口,
  2. 导航到Android>DDMS
  3. 并将HPROF操作更改为"在Eclipse中打开"

enter image description here


1
很遗憾它不能用于Android hprof..但还是值得一试的 :) - Henrique de Sousa
干杯。我在命令行中将.hprof添加到每个文件名的末尾,但它没有输出文件。 - filthy_wizard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接