Ответ
В Kotlin есть два типа ссылок:
- Strong references – обычные ссылки, удерживающие объект в памяти
- Weak/Soft references – из пакета
java.lang.ref, позволяют GC собирать объекты
Пример с WeakReference:
val obj = Any()
val weakRef = WeakReference(obj)
// После GC weakRef.get() может вернуть null
Особенности:
- WeakReference полезны для кешей, чтобы избежать утечек памяти
- SoftReference реже очищаются GC чем Weak
- Для работы с ссылками в Android часто используют
WeakHashMap
Пример с WeakProperty:
var heavyObject by Weak() // делегат из kotlin.properties