Утечка памяти в ListView? - PullRequest
       5

Утечка памяти в ListView?

2 голосов
/ 14 сентября 2010

Эй, похоже, у меня какая-то проблема с утечкой памяти при просмотре списка. Активность представления списка находится на вкладке, и каждая строка загружает изображение и отображает его в ImageView (выкладывая его как фон). Я использую кеш, похожий на droidfu http://github.com/kaeppler/droid-fu/blob/master/src/main/java/com/github/droidfu/imageloader/ImageCache.java

Кажется, все работает нормально, так как я полностью очищаю кэш памяти, когда он получает более 20 элементов, а также полностью очищаю кэш диска, когда он превышает 0,5 МБ, просто для безопасности. Проблема возникает, когда у меня большой список элементов в списке (скажем, 100), и я продолжаю прокручивать этот список вперед и назад так быстро, как могу. В конце концов я получаю эти сообщения в Logcat:

Требуется кучный массаж (59892-байтовое внешнее распределение слишком велико)

Полный GC (не собирать SoftReferences)

Зафиксировать целевую кучу GC с 16,277 МБ до 16 000 МБ

Попробуйте обрезать источник кучи

Полный сбор данных (сбор SoftReferences)

И целая куча тех, кто приводит к закрытию силы. Я не слишком уверен, в чем проблема или как ее исправить: S

Спасибо!

Вот полный журнал: http://pastebin.com/MghMdbxS

Оказывается, проблема в том, что создается слишком много объектов AsyncTask / Thread. Я использую код из http://code.google.com/p/android-imagedownloader/ и не знаю, как это исправить ...

1 Ответ

0 голосов
/ 14 сентября 2010

Хорошее место для начала:

http://kohlerm.blogspot.com/2009/04/analyzing-memory-usage-off-your-android.html

Получить дамп немного сложно, но он даст вам хороший статический анализ на определенный момент времени. Вам также понадобится инструмент анализа памяти Eclipse (MAT):

http://www.eclipse.org/mat/

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...