LRU LinkedHashMap, który ogranicza rozmiar na podstawie dostępnej pamięci

Chcę utworzyć mapę LinkedHashMap, która ograniczy jej rozmiar na podstawie dostępnej pamięci (np. KiedyfreeMemory + (maxMemory - allocatedMemory) poniżej pewnego progu). Będzie to używane jako forma pamięci podręcznej, prawdopodobnie przy użyciu „ostatnio używanego” jako strategii buforowania.

Obawiam się jednak, że allocMemory zawiera również (zakładam) dane zebrane bez użycia śmieci, a tym samym nadmiernie oszacuje ilość używanej pamięci. Martwię się o niezamierzone konsekwencje, jakie mogłoby to mieć.

Na przykład LinkedHashMap może nadal usuwać elementy, ponieważ uważa, że ​​nie ma wystarczającej ilości wolnej pamięci, ale wolna pamięć nie zwiększa się, ponieważ te usunięte elementy nie są natychmiast zbierane.

Czy ktoś ma jakieś doświadczenie z tego typu rzeczami? Czy moje obawy są uzasadnione? Jeśli tak, czy ktoś może zaproponować dobre podejście?

Powinienem dodać, że chcę również móc „zablokować” pamięć podręczną, mówiąc w zasadzie „ok, od teraz nie usuwaj niczego z powodu problemów z pamięcią”.

questionAnswers(5)

yourAnswerToTheQuestion