【问题标题】:Hunting a memory leak with Eclipse and Mat, stuck converting the hprof file使用 Eclipse 和 Mat 寻找内存泄漏,转换 hprof 文件时卡住了
【发布时间】:2013-10-22 17:11:28
【问题描述】:

这似乎是一个被问过很多次的问题。我正在使用 Eclipse 在 OS X 中编写一个 Android 应用程序。到目前为止,没问题,除了应用程序有时会崩溃,我想看看发生了什么,以便我可以解决问题。 (它可能与位图或变量没有正确回收有关。但我不知道从哪里开始研究它。)

我使用 DDMS 工具(在 eclipse 中)创建了一个转储文件。然后我下载了 MemoryAnalyzer 应用程序来打开它。这是我被困了一个小时的地方:我必须先转换文件,因为 Eclipse 以不同的格式写入 hprof 文件。如何转换?

这个问题的答案,error openning HPROF file,直接解决了我的问题。最佳答案与 hprof-conv 工具的参考相同。

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

例如:

hprof-conv android.hprof mat.hprof

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

我有几个问题。

  1. 当我打开 hprof-conv 工具时,它会显示一些关于它的行,然后显示“[进程完成]”。而且没有地方可以输入任何文字。屏幕上唯一相关的信息是:

    用法:hprof-conf infile outfile

  2. 我在终端中,所以我打开“新命令...”或尝试使用同样打开的 shell。然后当我运行“hprof-conv dump1.hprof dump1a.hprof”时,我收到错误“找不到命令”。所以我觉得我跑题了。我还尝试了“hprof-conf”,而不是“hprof-conv”,它在第 1 点中建议的方式。同样的错误。也尝试了文件的各种路径,没有变化。

  3. 如果我在正确的轨道上,我如何正确地将这个命令指向文件位置?我在我的桌面上有它,它的名字是dump1.hprof。我对终端不是很有经验。

提前感谢您的回答,或者关于如何寻找内存泄漏的其他建议。

【问题讨论】:

  • 听起来你只需要指定命令的完整路径 - /full-path/hprof-conv dump1.hprof dump1a.hprof

标签: android eclipse memory-leaks terminal hprof


【解决方案1】:

如果您在 mac 上,请在命令前添加 ./:

./hprof-conv infile.hprof outfile.hprof

【讨论】:

    【解决方案2】:

    您好,很抱歉回复晚了。我刚刚解决了这个问题并在这里写了一些说明:http://spragucm.wordpress.com/2013/11/21/debugging-android-project-ddms-heap-dump-in-eclipse/

    方法 1:使用独立 MAT

    • 进入 c:...\sdk-tools\tools 并复制 hprof-conv.exe
    • 转到您保存 dump1.hprof 文件的任何文件夹并粘贴 .exe 文件
    • 打开终端并将目录更改为包含您的转储和 .exe 文件的文件夹(例如,如果文件夹为 c:\Users\YourName\DumpFolder,则键入 cd c:\Users\YourName\DumpFolder
    • 当您在文件夹中时,在命令提示符中键入以下内容并回车:hprof-conf infile.hprof outfile.hprof

    注意:如果您收到有关未找到目录的错误,则说明您不在命令提示符下的正确目录中

    • outfile.hprof 文件应与其他文件位于同一文件夹中。

    方法二:在Eclipse中使用MAT

    • 在 Eclipse 中安装 MAT 插件
    • 选择以像以前一样获取堆转储
    • 转到窗口->打开透视图->其他->内存分析
    • 在您的选项卡中查看左上角带有蓝色磁盘图标的窗口,然后展开选项卡(上面会有一些疯狂的名称和一串很长的数字)
    • 完成...您正在查看 Eclipse 中的堆转储

    【讨论】:

    • 谢谢!!!!方法2完美。我不知道我应该怎么弄清楚。如果你愿意,请称我为菜鸟,但我现在已经启动并运行,最终弄清楚如何使用该工具。
    • 你能帮我解决 ubuntu 14.04 的问题吗stackoverflow.com/q/29489190/1994950
    • 抱歉,没有关于 Ubuntu 的线索……甚至从未打开过操作系统
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2012-05-24
    • 2016-03-29
    相关资源
    最近更新 更多