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