Что такое слабая ссылка

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

Ответ

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

Пример:

val strongRef = Any()
val weakRef = WeakReference(strongRef)

// Объект доступен через weakRef.get()
strongRef = null // Теперь GC может удалить объект

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

  • Кеширование (например, WeakHashMap).
  • Избежание утечек памяти (например, ссылки на Activity из фоновых задач).

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