2013-09-06 4 views
6

Dokumentacja ehcache mówi:EhCache - usunąć wygasły element (z powodu timeToIdleSeconds lub timeToLiveSeconds) bez próby jego odzyskania?

  • Dostęp do wpisu myCache która była bezczynna przez ponad godzinę (timeToIdleSeconds) powoduje, że element, aby być eksmitowany.
  • Jeśli wpis wygasa, ale nie jest dostępny, a ograniczenia zasobów nie wymuszają eksmisji, to wygasła pozycja pozostaje na miejscu.
  • pobranie wygasłego elementu spowoduje usunięcie go z pamięci podręcznej i zwróci wartość null.

Jeśli wdrożyć i zarejestrować się, aby otrzymywać CacheEventListener że element jest wygasł, można zobaczyć zdarzenie zostanie zwolniony, gdy staramy się wygasłą elementu, ale nie po "timeToIdleSeconds.

Czy można wymusić usunięcie wygasłego elementu po jego wygaśnięciu? Ponieważ w moim przypadku po tym czasie nikt nie będzie próbował go odzyskać.

Dziękuję.

+1

Zobacz także: http://stackoverflow.com/questions/8838039/ehcache-does-not-remove-element-from-memory-on -viction – butallmj

Odpowiedz

6

Zrobiłem to z następującego kodu:

cache.evictExpiredElements(); 
cache.flush(); 
+0

Zrobiłem to w podobny sposób. Szukałem rozwiązania z funkcją AUTO-Eksymistyka, ale działa. Dziękuję Ci. – gfjr

+0

Chciałem zrobić to automatycznie, ale jest wskazówka w dokumentach EhCache - 'expired'! =' Removed', więc musiałem zrobić to ręcznie – skayred

Powiązane problemy