Какие знаешь типы ссылок в Heap

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

Ответ

В Java (и Kotlin) есть 4 типа ссылок на объекты в Heap:

  1. Strong Reference - обычная ссылка, объект не будет собран GC, пока есть такая ссылка.
val obj = MyObject() // strong reference
  1. Soft Reference - объект будет собран GC только при нехватке памяти.
val softRef = SoftReference(MyObject())
  1. Weak Reference - объект может быть собран GC в любой момент.
val weakRef = WeakReference(MyObject())
  1. Phantom Reference - похожа на Weak, но объект уже финализирован. Используется для пост-обработки перед сборкой мусора.

WeakReference часто используют для кешей, SoftReference - для ресурсоемких объектов, PhantomReference - для точного контроля финализации.