Ответ
WeakReference — слабая ссылка, не препятствует сборке мусора. Используется для кешей, избегания утечек.
SoftReference — мягкая ссылка, удаляется только при нехватке памяти. Подходит для кеширования ресурсов.
StrongReference — обычная "сильная" ссылка, объект живет, пока есть хотя бы одна такая ссылка.
PhantomReference — "фантомная" ссылка, не дает доступа к объекту, но уведомляет о его финализации. Используется для контроля за сборкой мусора.
Пример:
val strongRef = Any() // Strong
val weakRef = WeakReference(strongRef)
val softRef = SoftReference(strongRef)
val phantomRef = PhantomReference(strongRef, ReferenceQueue())