LRU LinkedHashMap que limita el tamaño en función de la memoria disponible

Quiero crear un LinkedHashMap que limitará su tamaño en función de la memoria disponible (es decir, cuandofreeMemory + (maxMemory - allocatedMemory) se pone por debajo de un cierto umbral). Esto se usará como una forma de caché, probablemente usando "menos usado recientemente" como estrategia de almacenamiento en caché.

Sin embargo, mi preocupación es que la Memoria asignada también incluye (supongo) los datos recopilados sin basura, y por lo tanto sobreestimará la cantidad de memoria utilizada. Me preocupan las consecuencias involuntarias que esto podría tener.

Por ejemplo, LinkedHashMap puede seguir eliminando elementos porque cree que no hay suficiente memoria libre, pero la memoria libre no aumenta porque estos elementos eliminados no se recolectan como basura de inmediato.

¿Alguien tiene alguna experiencia con este tipo de cosas? ¿Se justifica mi preocupación? Si es así, ¿alguien puede sugerir un buen enfoque?

Debo agregar que también quiero poder "bloquear" el caché, básicamente diciendo "ok, de ahora en adelante no eliminaré nada debido a problemas de uso de memoria".