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

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

Ответ

В Java/Android есть 4 типа ссылок:

  1. Strong – обычная ссылка, объект не будет собран GC, пока есть strong-ссылка.
  2. Soft – объект удаляется, когда JVM не хватает памяти. Полезно для кешей.
SoftReference<Bitmap> softRef = new SoftReference<>(bitmap);
  1. Weak – объект удаляется при следующем проходе GC, даже если память не заполнена. Используется для Listeners, чтобы избежать утечек.
WeakReference<Activity> weakRef = new WeakReference<>(activity);
  1. Phantom – похожа на Weak, но get() всегда возвращает null. Используется для финализации (например, освобождение native-ресурсов).

Важно: Weak/SoftReference не гарантируют, что объект будет жить дольше, чем strong-ссылки на него.