Проблема была в том, что приложение одновременно отображает большое количество изображений на различных экранах и вкладках. Многие
изображения загружались и хранились в памяти в большем размере, чем это реально требовалось для отображения на экране. Это приводило к повышенному потреблению оперативной памяти, более высокой вероятности Out Of Memory ошибок и аварийных завершений на устройствах с ограниченными ресурсам и неэффективному использованию ресурсов устройства.
Что было сделано?Проведена оптимизация механизма загрузки и декодирования изображений:
- изображения начали загружаться в размере, максимально близком к фактическому размеру отображения;
- изменено поведение по умолчанию при невозможности определить размер изображения: теперь используется средний размер вместо самого большого;
- оптимизировано хранение обложек и других часто используемых изображений.
В результате оптимизации механизма загрузки и хранения изображений удалось сократить потребление нативной памяти приложения на Главной
на 35%. Для отдельных изображений потребление памяти было уменьшено
с 7 МБ до 0,8 МБ, что соответствует сокращению до 89% без заметного ухудшения качества отображения. Это снижает риск нехватки памяти, повышает стабильность приложения и улучшает производительность на устройствах пользователей.
Спасибо команде:Денису Заболоцкому за исследование и разработку и Диме Булгакову за ревью!