LRU LinkedHashMap, который ограничивает размер в зависимости от доступной памяти

Я хочу создать LinkedHashMap, который будет ограничивать его размер на основе доступной памяти (т.е. когдаfreeMemory + (maxMemory - allocatedMemory) становится ниже определенного порога). Это будет использоваться как форма кеширования, возможно, с использованием «наименее недавно использованного» в качестве стратегии кеширования.

Однако меня беспокоит то, что allocMemory также включает (я полагаю) данные, собранные без сбора мусора, и, таким образом, будет переоценивать объем используемой памяти. Я обеспокоен непредвиденными последствиями, которые это может иметь.

Например, LinkedHashMap может продолжать удалять элементы, потому что считает, что не хватает свободной памяти, но объем свободной памяти не увеличивается, поскольку эти удаленные элементы не собираются немедленно.

У кого-нибудь есть опыт работы с подобными вещами? Оправдано ли мое беспокойство? Если так, может кто-нибудь предложить хороший подход?

Я должен добавить, что я также хочу иметь возможность «заблокировать» кеш, в основном говоря: «Хорошо, отныне ничего не удаляйте из-за проблем с использованием памяти».

Ответы на вопрос(5)

Ваш ответ на вопрос