В чем разница между Soft Reference и Weak Reference

Ответ

Soft Reference (SoftReference) и Weak Reference (WeakReference) — оба относятся к слабым ссылкам, но различаются поведением при сборке мусора:

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

Главное отличие: GC агрессивнее удаляет WeakReference, тогда как SoftReference сохраняет объект дольше, пока память не станет критически низкой.