Почему нельзя самому следить за памятью

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

Ответ

В Android управление памятью осуществляется через Garbage Collector (GC), который автоматически освобождает память от неиспользуемых объектов. Ручное управление памятью сложно и подвержено ошибкам:

  1. Сложность — легко пропустить освобождение ресурсов, что приведёт к утечкам.
  2. Неэффективность — GC оптимизирован под работу с кучей и учитывает жизненный цикл приложения.
  3. Непредсказуемость — ручное управление может нарушить работу GC и вызвать лаги.

Пример утечки:

class LeakyActivity : Activity() {
    private val listener = object : SomeListener {
        override fun onEvent() = Unit
    }

    override fun onCreate() {
        SomeSingleton.register(listener) // Утечка: listener держит Activity
    }
}

Используйте WeakReference или Lifecycle-aware компоненты (например, LiveData).