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".