Я хочу создать LinkedHashMap, который будет ограничивать свой размер в зависимости от доступной памяти (т. Е. Когда freeMemory + (maxMemory - allocatedMemory)
становится ниже определенного порога). Это будет использоваться в качестве формы кеширования, возможно, с использованием «наименее недавно использованного» в качестве стратегии кеширования.
Однако меня беспокоит то, что allocMemory также включает (я предполагаю) данные, не собранные сборщиком мусора, и, таким образом, будет переоценивать объем используемой памяти. Я обеспокоен непредвиденными последствиями, которые это может иметь.
Например, LinkedHashMap может продолжать удалять элементы, поскольку считает, что не хватает свободной памяти, но объем свободной памяти не увеличивается, поскольку эти удаленные элементы не сразу удаляются мусором.
Кто-нибудь имеет опыт работы с подобными вещами? Оправдано ли мое беспокойство? Если да, может кто-нибудь предложить хороший подход?
Я должен добавить, что я также хочу иметь возможность "заблокировать" кеш, в основном говоря: "Хорошо, теперь не удаляйте ничего из-за проблем с использованием памяти".