Ответ
Strong — обычная ссылка, удерживает объект в памяти, пока существует.
Soft — удаляется GC при нехватке памяти, но до OOM. Подходит для кешей.
Weak — удаляется GC при следующем сборе мусора, даже если памяти достаточно. Используется для избежания утечек (например, в WeakReference для Context).
Phantom — не предотвращает удаление объекта, но позволяет узнать, что он удален (через ReferenceQueue). Используется для финализации.
Пример WeakReference:
val weakRef = WeakReference(someObject)
// GC может удалить someObject, если нет других ссылок