Как найти класс утечки памяти/активность в Android
Я новичок в этой платформе Android. В одном приложении происходит утечка памяти. Но я не мог найти, в какой активности или классе происходит утечка памяти.
Я использую MAT, чтобы получить предупреждение о наличии утечки памяти. Но не в состоянии найти, какая активность протекает.
Скажите, пожалуйста, как найти, какая активность протекает.
Спасибо.
Ответы
Ответ 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