[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-pochemu-by-ne-sozdat-phantomhashmap-na-phantomreferences":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},471,"pochemu-by-ne-sozdat-phantomhashmap-na-phantomreferences",12,"collections","Collections","📚","Почему бы не создать PhantomHashMap на PhantomReferences","`PhantomReference` при вызове метода `get()` всегда возвращает null — это заложено в контракте класса. Создать PhantomHashMap невозможно по смыслу: если ключ всегда null, нельзя ни найти запись, ни получить значение по ключу.\n\nPhantomReference предназначен для совершенно другой задачи: отслеживание момента, когда объект был финализирован и готов к удалению из памяти. Он используется через ReferenceQueue для выполнения действий очистки ресурсов (закрытие файлов, освобождение нативной памяти) как альтернатива методу `finalize()`. Эта семантика не совместима с концепцией ассоциативного массива.\n\n> **На собеседовании:** ключевой аргумент — PhantomReference.get() всегда возвращает null. Покажите, что знаете назначение PhantomReference: отслеживание финализации через ReferenceQueue.","","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]