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 secondsmetodagetObjectFromCache(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

questionAnswers(7)

yourAnswerToTheQuestion