如何确定我的 android 应用程序是不是存在内存泄漏?
Posted
技术标签:
【中文标题】如何确定我的 android 应用程序是不是存在内存泄漏?【英文标题】:How can I determine if my android app has memory leak?如何确定我的 android 应用程序是否存在内存泄漏? 【发布时间】:2012-06-19 08:46:42 【问题描述】:我浏览了整个 internet\goolge\***,但找不到完整而简单的指南,可以向我解释如何找到我的 android 应用程序是否存在内存泄漏。 任何人都可以向我解释如何做,或者更好地给我一个很好的指导吗?
我的应用程序收集有关电池的数据并将其保存到手机上的数据库。 每次电池发生变化时 (ACTION_BATTERY_CHANGED),我都会检查电池百分比是否发生变化,在这种情况下,我会保存一些数据。
这个应用程序占用 (25-30)MB RAM 我认为这对于如此简单的应用程序来说太多了。我怀疑它有内存泄漏。
【问题讨论】:
【参考方案1】:当我遇到和你一样的问题时,我发现了 LeakCanary。它有助于在调试构建的运行时检测内存泄漏,并为堆栈跟踪历史提供舒适的 UI。在这里,您可以阅读有关此用于检测内存泄漏的工具的更多信息以及其他一些对 Android 开发有用的提示:http://cases.azoft.com/4-must-know-tools-for-effective-android-development/。 希望它适用于您和其他移动开发者!
【讨论】:
【参考方案2】:通常,如果您使用应用程序并且它正在积累内存
12 MB ... 13.5 MB...15 MB ...想象一下积聚湿气的云...等等
如果您看到这种模式,则表明您的应用存在内存泄漏。
另一种可能性是您没有泄漏,但您只是使用了太多对象或太大的对象,或者您没有充分利用对象。 考虑到位图非常昂贵,因此在内存和资源有限的环境中处理位图可能不是那么简单。
【讨论】:
【参考方案3】:你可以使用 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
MAT 的 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
http://download.eclipse.org/birt/update-site/3.7-interim
Memory Analyzer Tool in android?
【讨论】:
以上是关于如何确定我的 android 应用程序是不是存在内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章
如何确定 Skype 通话当前是不是在 Android 上处于活动状态
如何确定我的应用程序是不是在 Android 上运行 [重复]