我认为我的android应用正在泄漏内存。我不是绝对确定这是问题所在。
应用程序打开时经常崩溃,并且logcat尝试加载位图图像时会显示“内存不足”异常。
崩溃后,我重新打开了该应用程序,它运行正常。Logcat会显示许多“ gc”,并且JIT表会不时地向上调整大小,而不会向下调整,直到应用程序因内存不足错误而崩溃。
这听起来像是内存泄漏吗?如果是这样,我该如何定位和关闭泄漏点。
这是我的应用程序的adb shell meminfo。
** MEMINFO in pid 2691 [com.example.deepcliff] ** native dalvik other total size: 23264 8839 N/A 32103 allocated: 12503 3826 N/A 16329 free: 168 5013 N/A 5181 (Pss): 2512 1395 13815 17722 (shared dirty): 2088 1844 5008 8940 (priv dirty): 2412 224 11316 13952 Objects Views: 0 ViewRoots: 0 AppContexts: 0 Activities: 0 Assets: 2 AssetManagers: 2 Local Binders: 55 Proxy Binders: 13 Death Recipients: 1 OpenSSL Sockets: 0 SQL heap: 129 MEMORY_USED: 129 PAGECACHE_OVERFLOW: 9 MALLOC_SIZE: 50 DATABASES pgsz dbsz Lookaside(b) Dbname 1 14 10 webview.db 1 6 18 webviewCache.db Asset Allocations zip:/data/app/com.example.deepcliff-2.apk:/resources.arsc: 17K
这里有几篇文章和帖子,可能有助于您走上正确的路:
__Android SDK随附的 分配跟踪器 非常有用。阅读Romain Guy的文章。它帮助我找到了非常讨厌的漏洞。它还可以帮助您编写更好的软件。例如,我学会了创建更少的对象,使用更多的StringBuilder和缓存更多的东西: 哪种Android工具和方法最适合发现内存/资源泄漏?
这是一篇有关解决内存问题的出色文章:http : //ttlnews.blogspot.com/2010/01/attacking-memory-problems-on- android.html
有关避免内存泄漏的官方文章:http : //android-developers.blogspot.co.uk/2009/01/avoiding-memory- leaks.html
其他人已经指出了 位图 。以下是描述问题的文章:http: //zrgiu.com/blog/2011/01/android-bitmaps-and- out-of-memory-errors/