Какие ссылочные классы использует Garbage Collector

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

Ответ

В Java (и Android) Garbage Collector работает с тремя типами ссылок:

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

На Android особенно полезны WeakReference для избежания утечек памяти в асинхронных операциях (например, WeakReference к Activity в AsyncTask).