Я думаю, что мое приложение Android поражает память. Я не совсем уверен, что это проблема.Утечка памяти Android?
Каждый раз, когда приложение открывается с ошибкой при открытии, лог-код показывает исключение «из памяти», пытающееся загрузить растровое изображение.
После сбоя я снова открываю приложение, и оно отлично работает. Logcat показывает множество «gc» и каждый раз, когда таблица JIT изменяется в размерах вверх, а не вниз, пока приложение не выйдет из строя с ошибкой вне памяти.
Звучит ли это как утечка памяти? Если да, то как я могу найти и закрыть утечку.
Вот мой memf для моего приложения adb для моего приложения.
** MEMINFO in pid 2691 [com.example.deepcliff] **
native dalvik other total
size: 23264 8839 N/A3
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
Прежде всего, я предполагаю, что ваше приложение на недавно перезагруженном устройстве может загружать все растровые изображения, которые ему нужны, когда вы работаете с ним. Вернувшись к ней в стеке действий несколько раз, он будет рушиться? В этом случае вы, скорее всего, просачиваетесь в память, сохраняя ссылки на экземпляры ваших действий, которые были уничтожены. – Jens
1.Да, нормально работает нормально. Он падает только после того, как я использовал его некоторое время, закрыл его и снова открыл. Поэтому, если это утечка описанного вами способа, где я могу найти ссылки на примеры моих действий. – Arjun
Мне любопытно, влияет ли изменение ориентации (много) на определенные действия? Это сузило бы потенциальные ошибки. –