HashMap ze słabymi wartościami
Implementuję pamięć podręczną dla obiektów przechowywanych trwale. Pomysł jest następujący:
metodagetObjectFromPersistence(long id); ///Takes about 3 seconds
metodagetObjectFromCache(long id) //Instantly
I zastosuj metodę:getObject(long id)
z następującym pseudokodem:
synchronized(this){
CustomObject result= getObjectFromCache(id)
if (result==null){
result=getObjectFromPersistence(id);
addToCache(result);
}
return result;
}
Ale muszę pozwolić, aby CustomObject został zebrany przez garbage collector. Do tej pory korzystałem zHashMap<Long,WeakReference<CustomObject>
do wdrożenia. Problem polega na tym, że wraz z upływem czasu HashMap staje się pustaWeakReferences
.
sprawdziłemWeakHashMap ale klucze są słabe (a wartości są nadal mocnymi referencjami), więc posiadanie długich z WeakReferences nie ma sensu.
Co jest najlepszym rozwiązaniem dla rozwiązania tego problemu? Czy jest jakiś „odwrotny WeakHapMap” lub coś podobnego?
Dzięki