В каком случае Garbage Collector удаляет Soft Reference

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

Ответ

Soft Reference удаляется сборщиком мусора (GC) только при нехватке памяти. В отличие от Weak Reference, которая удаляется сразу при отсутствии сильных ссылок, Soft Reference сохраняет объект дольше — до тех пор, пока JVM действительно нуждается в освобождении памяти. Это делает Soft Reference полезным для кэширования.

Пример:

val softRef = SoftReference<BigData>(BigData())
// Пока памяти хватает, softRef.get() вернет объект
// При нехватке памяти GC может очистить softRef

Важно: поведение может немного отличаться в зависимости от версии Android и JVM.