Приходилось ли оптимизировать память в Android приложении

«Приходилось ли оптимизировать память в Android приложении» — вопрос из категории Управление памятью, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, приходилось. Основные методы:

  • Использование WeakReference для кеширования, чтобы GC мог очистить объекты при нехватке памяти.
WeakReference<Bitmap> weakBitmap = new WeakReference<>(bitmap);
  • Оптимизация Bitmap через inSampleSize, BitmapFactory.Options и библиотеки типа Glide/Picasso.

  • Анализ утечек памяти через LeakCanary и Android Profiler.

  • Очистка ресурсов в onDestroy()/onStop(), отмена подписок (RxJava/Coroutines).

  • Использование ArrayMap/SparseArray вместо HashMap для примитивных ключей.

Пример:

val sparseArray = SparseArray<String>().apply {
    put(1, "value") // Экономит память vs HashMap<Int, String>
}

Также важно избегать статических контекстов и больших объектов в Application.