Java ConcurrentHashMap расширяется динамически при необходимости. Я предполагаю, что, как и в других коллекциях Java, внутреннее хранилище ConcurrentHashMap
не будет уменьшаться при удалении ключей (пожалуйста, исправьте меня, если я ошибаюсь, я не вижу в спецификации ничего, что могло бы предположить, что оно будет уменьшаться). Я собираюсь создать много ConcurrentHashMaps
, размер которых может часто увеличиваться, а затем значительно уменьшаться. Это для большого кэша, поэтому важно ограничить использование памяти. Поэтому я ищу:
Реализация hashmap в java, которая поддерживает более или менее несинхронизированный / неблокирующий режим, в то же время обеспечивая многопоточность
потоки будут получать и помещать (как уже делает ConcurrentHashMap).
Сокращает внутреннее хранилище автоматически, например, если 75% внутренних слотов таблицы пусты (75% - это просто пример, любой
разумный процент в порядке).
Кто-нибудь знает о подходящей реализации?
Я не вижу способа получить текущий 'capacity'
ConcurrentHashMap, чтобы я мог просто удалить и воссоздать его, когда его записи станут слишком свободными.