[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-pochemu-by-ne-sozdat-softhashmap-na-softreferences":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":18,"progress":19,"seo":20},470,"pochemu-by-ne-sozdat-softhashmap-na-softreferences",12,"collections","Collections","📚","Почему бы не создать SoftHashMap на SoftReferences","`SoftHashMap` на SoftReference теоретически возможен и реализован в сторонних библиотеках (например, `org.apache.commons.collections4.map.ReferenceMap`). Однако в стандартную библиотеку Java он не включен.\n\nSoftReference удаляется только при нехватке памяти, а не при ближайшей сборке мусора как WeakReference. Это делает поведение SoftHashMap менее предсказуемым: время жизни записей зависит от давления на heap и реализации GC. В одних условиях записи будут жить долго, в других — удалятся быстро.\n\nНа практике для кэширования (основной сценарий SoftReference) лучше использовать специализированные библиотеки кэширования (Caffeine, Guava Cache), которые предоставляют контролируемые политики вытеснения (LRU, LFU, TTL) вместо непредсказуемого поведения SoftReference.\n\n> **На собеседовании:** упомяните, что SoftHashMap есть в Apache Commons. Объясните, почему для кэширования лучше использовать Caffeine\u002FGuava — они дают контроль над политикой вытеснения.","","senior",[15,16,17],"memory","gc","jcf",[],null,{"title":21,"description":22,"ogTitle":23,"ogDescription":24,"keywords":25,"schemaAnswer":35,"featuredSnippetReady":36},"Почему нет SoftHashMap в JDK — Gymterview","SoftHashMap есть в Apache Commons. Не в JDK из-за непредсказуемого поведения SoftReference (зависит от давления на heap). Для кэширования лучше Caffeine\u002FGuava.","SoftHashMap — почему нет в стандартной библиотеке — Gymterview","SoftReference непредсказуем (зависит от heap). Для кэширования — Caffeine\u002FGuava с контролируемыми политиками.",[26,27,28,29,30,31,32,33,34],"SoftHashMap","SoftReference","WeakHashMap","Apache Commons","Caffeine","Guava Cache","кэширование","Java","собеседование","SoftHashMap реализован в Apache Commons (ReferenceMap). Не в JDK: SoftReference удаляется только при нехватке памяти, поведение зависит от GC — непредсказуемо. Для кэширования лучше Caffeine\u002FGuava Cache с контролируемыми политиками (LRU, LFU, TTL).",true]