我认为我的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 :
//developer.android.com/guide/practices/design/performance.html
这是一篇有关解决内存问题的出色文章:http :
//ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html
有关避免内存泄漏的官方文章:http :
//android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html
另请阅读以下内容:用于检查Android中内存泄漏的工具
其他人已经指出了位图。这是一篇描述问题的文章:http: //zrgiu.com/blog/2011/01/android-bitmaps-and-out-of-memory-errors/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句