我查看了整个互联网\ goolge \ stackoverflow,找不到完整而简单的指南,可以向我解释如何找到我的Android应用程序是否有内存泄漏。 任何人都可以向我解释如何做到这一点,或者更好地给我一个很好的指导吗?
我的应用收集有关电池的数据并将其保存到手机上的数据库中。 每次更换电池时(ACTION_BATTERY_CHANGED),我都会检查电池的百分比是否发生变化,在这种情况下我会保存一些数据。
这个应用需要(25-30)MB RAM我认为这对于这样简单的app来说太过分了。我怀疑它有内存泄漏。
答案 0 :(得分:23)
你可以使用MAT
这是一个非常好的工具,可以为您的项目提供非常详细的报告,其中包含与内存泄漏相关的基本信息
Android中的MAT
http://android-developers.blogspot.in/2011/03/memory-analysis-for-android.html
如何使用MAT
http://kohlerm.blogspot.in/2009/07/eclipse-memory-analyzer-10-useful.html
http://android-developers.blogspot.in/2011/03/memory-analysis-for-android.html
http://ttlnews.blogspot.in/2010/01/attacking-memory-problems-on-android.html
Eclipse的整合
http://www.eclipse.org/mat/downloads.php
http://www.eclipse.org/forums/index.php/m/878338/
更新网站:http://download.eclipse.org/mat/1.1/update-site/
BERT的Eclipse集成(依赖于此)
http://wiki.eclipse.org/BIRT_Update_Site_URL
答案 1 :(得分:2)
当我遇到与你相同的问题时,我找到了 LeakCanary 。它有助于在调试版本的运行时检测内存泄漏,并为堆栈跟踪历史记录提供舒适的UI。在这里,您可以阅读有关此工具的更多信息,以便检测内存泄漏以及其他一些有关Android开发的有用提示:http://cases.azoft.com/4-must-know-tools-for-effective-android-development/。 希望它适合您和其他移动开发人员!
答案 2 :(得分:1)
通常,如果您使用应用程序并且正在累积内存
12 MB ... 13.5 MB ... 15 MB ...想想积累湿度的云......等等
如果您看到此模式,则表明您的应用内存泄漏。
另一种可能性是你没有泄漏,但你只是使用太多的物体或太大的物体,或者你不能很好地节省物品。 考虑到位图是非常昂贵的,因此处理位图在android中可能不是那么微不足道,这是内存和资源有限的环境。