安卓内存分析

9
我目前需要在一个应用程序中搜索内存泄漏,并且遇到了工作流问题。这篇博客文章(http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html)说:
“如果你正在运行ADT(其中包括DDMS的插件版本),并且在Eclipse中安装了MAT,那么点击“dump HPROF”按钮将自动进行转换(使用hprof-conv),并将转换后的hprof文件打开到Eclipse中(由MAT打开)。”
但是当我在Eclipse中按下按钮并尝试打开hprof文件时,我收到了以下错误消息 - 所以我仍然需要进行转换:
“Error opening heap dump 'com.baseapp.foo.hprof'. Check the error log for further details. Error opening heap dump 'com.baseapp.foo.hprof'. Check the error log for further details. Unknown HPROF Version (JAVA PROFILE 1.0.3) (java.io.IOException) Unknown HPROF Version (JAVA PROFILE 1.0.3)”
有人知道我在这里做错了什么吗?我正在使用ADT 16。

是的,但是smith324的答案更有帮助 - 所以他获得了赏金。 - ligi
3个回答

24

我在我的设置中也遇到了这个问题,似乎有一系列步骤会导致Eclipse默认保存到文件(而不是进行转换并打开它)。

解决方法:

首选项(全局的Eclipse)-> Android -> DDMS -> HPROF动作 ->设置为“在Eclipse中打开”(我的先前设置为“保存到磁盘”)


非常感谢 - 那正是我需要的提示!享受你的赏金吧!! - ligi

9
将从Android OS中获取的hprof文件转换为标准的hprof格式。您可以使用位于AndrodiSDK/tools/hprof-conv的hprof-conv工具来完成此操作。
就像这样
hprof-conv android.hprof mat.hpof

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

我没有遇到这个问题。我也有ADT 16。 - coderslay
那么你就不必执行“hprof-conv android.hprof mat.hpof”了吗? - ligi
1
是的...我之前遇到过这个问题,解决方法是使用我提到的不太正规的方式。然后有一天我更新了所有东西,它就开始工作了...尝试做同样的事情 :P - coderslay
嗯,非常奇怪。你使用的是什么操作系统? - coderslay
我正在使用Ubuntu Linux,配合Eclipse 3.7.0 / Memory Analyzer 1.1.1.201108240735和ADT 16。 - ligi
显示剩余2条评论

1
错误信息表明错误日志中有其他详细信息(窗口 > 显示视图 > 错误日志)。您能否清除日志,然后再次重现问题,查看错误日志中是否出现任何内容以帮助确定问题的原因?

这个错误日志中只显示了一个错误,似乎与MAT/DDMS没有关联:“Invalid preference page path: XML Syntax”,但没有详细信息。eclipse.buildId=I20110613-1736 java.version=1.6.0_23 java.vendor=Sun Microsystems Inc. BootLoader常量:OS=linux,ARCH=x86_64,WS=gtk,NL=en_US 命令行参数:-os linux -ws gtk -arch x86_64 - ligi

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