Всегда ли удаляется сильная ссылка

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

Ответ

Нет, сильная ссылка не всегда удаляется автоматически. Она удаляется только когда на объект больше нет сильных ссылок, что позволяет сборщику мусора освободить память.

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

class LeakyActivity : Activity() {
    private val leak = object : SomeListener {
        override fun onEvent() { /* ... */ }
    }

    override fun onCreate() {
        SomeSingleton.registerListener(leak) // Утечка: сильная ссылка в синглтоне
    }
}

Здесь leak не удалится, пока жив SomeSingleton, даже если LeakyActivity уничтожена.

Используйте слабые ссылки (WeakReference) или явный unregister, чтобы избежать утечек.