Ответ
Soft Reference (SoftReference) и Weak Reference (WeakReference) — оба относятся к слабым ссылкам, но различаются поведением при сборке мусора:
- WeakReference — объект удаляется GC при следующей сборке, если нет других сильных или мягких ссылок. Используется для кешей, где данные можно легко восстановить.
WeakReference<Bitmap> weakRef = new WeakReference<>(bitmap);
- SoftReference — объект удаляется только при нехватке памяти (OutOfMemoryError). Подходит для кеширования ресурсоемких объектов, которые желательно держать в памяти, пока возможно.
SoftReference<Bitmap> softRef = new SoftReference<>(bitmap);
Главное отличие: GC агрессивнее удаляет WeakReference, тогда как SoftReference сохраняет объект дольше, пока память не станет критически низкой.