Что такое достижимая ссылка

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

Ответ

Достижимая ссылка (reachability) — это способность объекта быть достигнутым из корневых точек (например, статических полей, активных потоков, локальных переменных в стеке). Если объект недостижим, сборщик мусора (GC) может его удалить.

Пример:

fun createObject() {
    val obj = Object() // obj достижим, пока выполняется функция
} // После выхода obj становится недостижим и может быть удалён GC

Нюансы:

  • WeakReference/SoftReference не делают объект достижимым.
  • Циклические ссылки не мешают GC, если вся группа недостижима.
  • Объект в кэше без сильных ссылок тоже будет удалён.