Подтвердить что ты не робот

Как найти класс утечки памяти/активность в Android

Я новичок в этой платформе Android. В одном приложении происходит утечка памяти. Но я не мог найти, в какой активности или классе происходит утечка памяти.

Я использую MAT, чтобы получить предупреждение о наличии утечки памяти. Но не в состоянии найти, какая активность протекает.

Скажите, пожалуйста, как найти, какая активность протекает.

Спасибо.

4b9b3361

Ответ 1

Даже если этот вопрос будет тихим старым. Я думаю, что небольшой учебник с изображениями может быть полезен. Поэтому сначала вам нужно установить плагин MAT. После перезагрузки нажмите Dump HPROF file:

Device controls

Через некоторое время (около 30 секунд) вы получите диалоговое окно, в котором вы можете щелкнуть по окончании. Чем вы получите это представление:

Dump result

Там вы оставите клик на самой большой части и отфильтруйте с исходящими ссылками. Затем вы получите этот вид здесь:

Здесь вы можете увидеть, что я пропустил удаление элементов в моем ContentManager, где в моем ожидающем HashMap хранилище было сохранено несколько элементов.

Ответ 2

Лучшее сообщение, которое я нашел еще при отслеживании утечек памяти на платформах Android,:

http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html

Первая часть устарела, потому что теперь она интегрирована в Eclipse, но большая часть сообщения великолепна!

Ответ 3

Используйте LeakCanary - библиотеку обнаружения утечки памяти для Android и Java. LeakCanary будет автоматически показывать уведомление, когда утечка памяти активности обнаружена в вашей сборке отладки. Установка этой библиотеки очень проста.

https://github.com/square/leakcanary

Пример уведомления:

введите описание изображения здесь

Ответ 4

Я не могу комментировать предыдущий пост, но важно понять, что вам абсолютно нужно беспокоиться об управлении памятью, особенно в среде с ограниченными ресурсами, которая является мобильной платформой Android. Подробнее об этом можно узнать здесь:

http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html

Ответ 5

Вы можете увидеть это в DDMS.

Просто выберите имя своего приложения и нажмите кнопку "Обновить кучу" выше.

Теперь перейдите на вкладку "Куча", выберите "Причина GC".

вы найдете список используемых объектов.

Ответ 6

Вы можете анализировать утечки памяти Android автоматически с MMAT,MMAT страница GitHub