Arj*_*jun 15 java android memory-leaks
我认为我的Android应用程序正在泄漏内存.我不完全确定这是问题所在.
打开时应用程序经常崩溃,而logcat在尝试加载位图图像时显示"内存不足"异常.
崩溃后,我重新打开应用程序,它工作正常.Logcat显示了很多"gc",并且每隔一段时间JIT表会向上调整大小,从不向下,直到应用程序因内存不足错误而崩溃.
这听起来像是内存泄漏吗?如果是这样,我该如何定位和关闭泄漏.
这是我的app的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
Run Code Online (Sandbox Code Playgroud)
Jar*_*der 33
这里有几篇文章和帖子,可能会帮助您走上正确的轨道:
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
其他人已经指出了位图.这是一篇描述该问题的文章:http://zrgiu.com/blog/2011/01/android-bitmaps-and-out-of-memory-errors/
| 归档时间: |
|
| 查看次数: |
17969 次 |
| 最近记录: |