Параллельная хэш-карта в Java, которая сжимается при удалении ключей? - PullRequest
0 голосов
/ 07 сентября 2018

Java ConcurrentHashMap расширяется динамически при необходимости. Я предполагаю, что, как и в других коллекциях Java, внутреннее хранилище ConcurrentHashMap не будет уменьшаться при удалении ключей (пожалуйста, исправьте меня, если я ошибаюсь, я не вижу в спецификации ничего, что могло бы предположить, что оно будет уменьшаться). Я собираюсь создать много ConcurrentHashMaps, размер которых может часто увеличиваться, а затем значительно уменьшаться. Это для большого кэша, поэтому важно ограничить использование памяти. Поэтому я ищу:

  1. Реализация hashmap в java, которая поддерживает более или менее несинхронизированный / неблокирующий режим, в то же время обеспечивая многопоточность потоки будут получать и помещать (как уже делает ConcurrentHashMap).

  2. Сокращает внутреннее хранилище автоматически, например, если 75% внутренних слотов таблицы пусты (75% - это просто пример, любой разумный процент в порядке).

Кто-нибудь знает о подходящей реализации?

Я не вижу способа получить текущий 'capacity' ConcurrentHashMap, чтобы я мог просто удалить и воссоздать его, когда его записи станут слишком свободными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...