Что такое мягкая ссылка

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

Ответ

Мягкая (weak) ссылка (WeakReference) — это ссылка, которая не предотвращает сборку мусора для объекта. Если на объект остаются только слабые ссылки, GC может удалить его.

Пример:

val obj = Any()
val weakRef = WeakReference(obj)
// GC может очистить obj, если нет других strong ссылок
println(weakRef.get()) // null, если объект удалён

Использование:

  • Избегание утечек памяти (например, в кешах, Listeners).
  • В комбинации с WeakHashMap для хранения временных данных.

⚠️ Всегда проверяйте weakRef.get(), так как объект может быть уже удалён.