LRU LinkedHashMap que limita o tamanho com base na memória disponível

Eu quero criar um LinkedHashMap que irá limitar seu tamanho com base na memória disponível (ou seja, quandofreeMemory + (maxMemory - allocatedMemory) fica abaixo de um certo limite). Isso será usado como uma forma de cache, provavelmente usando "menos usado recentemente" como uma estratégia de cache.

Minha preocupação é que alocação de memória também inclui (suponho) dados não coletados pelo lixo e, portanto, superestimam a quantidade de memória usada. Estou preocupado com as conseqüências não intencionais que isso possa ter.

Por exemplo, o LinkedHashMap pode continuar excluindo itens porque acha que não há memória livre suficiente, mas a memória livre não aumenta porque esses itens excluídos não estão sendo coletados imediatamente.

Alguém tem alguma experiência com esse tipo de coisa? Minha preocupação é justificada? Em caso afirmativo, alguém pode sugerir uma boa abordagem?

Gostaria de acrescentar que eu também quero ser capaz de "bloquear" o cache, basicamente dizendo "ok, a partir de agora não exclua nada por causa de problemas de uso de memória".

questionAnswers(5)

yourAnswerToTheQuestion