ehcache не удаляет элемент из памяти при выселении

  1. ehcache 2. 5
  2. timeToIdleSeconds="1800" (30 минут), поэтому я ожидаю, что элемент будет выселен после 30 минут простоя
  3. Через 30 минут после последнего использования элемента я все еще вижу, что кэш полон элементов
  4. Форсирование GC и получение дампа кучи показывает, что элементы все еще находятся в памяти
  5. getSize() возвращает положительное число, а getKeys() возвращает ключи, как и ожидалось (getKeys() не проверяет истечение срока действия элементов)
  6. получение конкретного элемента, однако, приводит к значению NULL, что означает, что он истек.
  7. getKeysWithExpiryCheck() показывает, что кэш пуст и все элементы выведены и выселены
  8. Форсирование GC и получение дампа кучи показывает, что элементы собраны из памяти.

    maxEntriesLocalHeap="10000"
    eternal="false"
    statistics="true"
    overflowToDisk="false"
    timeToIdleSeconds="1800"
    memoryStoreEvictionPolicy="LFU"
    transactionalMode="off"
    

Из вышесказанного я вижу, что ehcache создает впечатление, что элементы просрочены, что может заставить мою логику кода обновить их, но под капотом память остается загрязненной элементами, пока я не вызову конкретный элемент или getKeysWithExpiryCheck(), что не позволяет мне использовать ehcache как эффективный менеджер памяти

Как заставить элемент быть GS после времени timeToIdleSeconds? Я хочу, чтобы память очищалась, если элементы не используются дольше timeToIdleSeconds.

Michael

9
задан user645055 12 January 2012 в 15:54
поделиться