Что такое WeakReference и SoftReference в Java? Какая разница между этими понятиями?



WeakReference
и SoftReference упоминается в контексте сборки мусора.



SoftReference используется при кешировании внутри системы и будет удален сборщиком мусора в случае если осталось мало памяти, а на объект существуют только ссылки SoftReference. Это критично при кэшировании, так как наш сборщик мусора самостоятельно освободит нам память в критичной ситуации, но до этого момента не будет "трогать" эти объекты.



WeakReference - в случае если на объект ссылаются только через weak-ссылки, то объект будет удален сразу при обходе сборщиком мусора.



Это критические отличия между этими двумя типами ссылок.