Как исправить проблемы с утечкой памяти?

Я делаю приложение для Android с несколькими фрагментами, действиями и несколькими Recyclerviews, а также изображениями, которые загружаются в режиме recycler из базы firebase с помощью glide. Моя проблема в том, что мое приложение очень отстает. Когда я использовал профилировщик для отслеживания потребления памяти приложением, потребление памяти моим приложением стало слишком большим. (скажем, мое приложение занимает 60 МБ сначала 2 секунды, затем 100, 200, 350, .... до этого выглядит 2 ГБ памяти). Я знаю, что это потенциальная утечка памяти. Но я не знаю, как это исправить. Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо!

Добавьте код, как вы загрузили изображение в recylerviews?

Mohamed Mohaideen AH 04.09.2018 16:11
1
1
418
1

Ответы 1

Первый подход - профилировать ваше приложение из Android Studio (кнопка профиля «приложение» -> выберите ПАМЯТЬ из раскрывающегося списка -> дважды щелкните, чтобы развернуть -> и проверьте свои распределения.

Какой компонент нагружает кучу?

Также существует LeakCanary, который сделает эту работу за вас: https://github.com/square/leakcanary

Хорошо, спасибо! У меня проблемы с памятью при переключении между фрагментами. поэтому предложите мне хороший способ использовать несколько фрагментов (например, на домашней странице Instagram)

user8215153 04.09.2018 20:14

Общая концепция экономии памяти заключается в том, чтобы хранить в памяти только используемые фрагменты / компоненты. Например, если вы используете ViewPager, вы можете переключиться на FragmentStatePagerAdapter вместо FragmentPagerAdapter. Другой способ - повторно использовать макеты, которые уже находятся в кеше пользовательского интерфейса. Это зависит от вашей реализации. Если ничего не работает, вам придется переосмыслить свою архитектуру. Немного полезной информации: developer.android.com/training/improving-layouts

Regulus 04.09.2018 20:39

собственно сегодня я нашел одну вещь. Утечка памяти происходит в Android 6.0, но не в 7.0 и выше. В чем может быть причина?

user8215153 06.09.2018 18:52

Хммм, извините, но это слишком широко. Если вы используете какие-либо внешние библиотеки, убедитесь, что у них нет известных проблем (github) с разными версиями Android. Но проведите дополнительное тестирование, убедитесь, что оно не было случайным, возможно, в Android 7 улучшено управление памятью, которое скрывает проблему.

Regulus 07.09.2018 00:06

Другие вопросы по теме