В Javadoc WeakHashMap.html сказано
"Каждый ключевой объект в WeakHashMap
хранится косвенно как референт
слабая ссылка. Поэтому ключ будет
автоматически удаляется только после
слабые ссылки на него, как внутри
и за пределами карты, были
очищается сборщиком мусора. "
А потом
Обратите внимание, что объект значения может ссылаться
косвенно к его ключу через
Сама WeakHashMap; то есть значение
объект может сильно ссылаться на некоторые
другой ключевой объект, связанный с которым
объект стоимости, в свою очередь, настоятельно относится
на ключ первого объекта значения.
Но не следует ли использовать и ключ, и значение в качестве слабой ссылки в WeakHashMap?
то есть, если памяти недостаточно, GC освободит память, удерживаемую объектом значения (поскольку объект значения, скорее всего, в большинстве случаев занимает больше памяти, чем объект ключа)?
А если GC освободит объект Value, ключевой объект также может быть свободным?
По сути, я ищу HashMap, который уменьшит использование памяти при нехватке памяти (GC собирает значения и ключевые объекты при необходимости).
Возможно ли это на Java?
Спасибо.