Ответ
Достижимая ссылка (reachability) — это способность объекта быть достигнутым из корневых точек (например, статических полей, активных потоков, локальных переменных в стеке). Если объект недостижим, сборщик мусора (GC) может его удалить.
Пример:
fun createObject() {
val obj = Object() // obj достижим, пока выполняется функция
} // После выхода obj становится недостижим и может быть удалён GC
Нюансы:
- WeakReference/SoftReference не делают объект достижимым.
- Циклические ссылки не мешают GC, если вся группа недостижима.
- Объект в кэше без сильных ссылок тоже будет удалён.