Ehcache definido como eterno, mas esquece elementos de qualquer maneir
Estou tentando configurar o Ehcache (versão 2.5) para que nunca esqueça itens. Estou configurando programaticamente e não toquei em nenhum dos arquivos XML de configuração. Pela configuraçãoeternal
paratrue
é meu entendimento que as únicas circunstâncias sob as quais um item pode ser removido do cache seriam se eu ficar sem espaço em disco ou excedermaxBytesLocalDisk
(ou se o aplicativo terminar). No entanto, este programa de teste não mostra esse comportamento:
public static void main(String[] args) {
CacheManager cacheManager = CacheManager.create();
Cache cache = new Cache(
new CacheConfiguration().name("test")
.overflowToDisk(true)
.eternal(true)
.maxBytesLocalHeap(1, MemoryUnit.MEGABYTES)
.overflowToOffHeap(false)
.maxBytesLocalDisk(100, MemoryUnit.GIGABYTES)
.maxElementsOnDisk(0)
.timeToIdleSeconds(0)
.timeToLiveSeconds(0)
.diskStorePath("E:\\Data\\Ehcache"));
cacheManager.addCache(cache);
for(int i = 0; i < 1000000; i++){
cache.put(new Element("key_" + i, "value_" + i));
}
System.out.println(cache.getSize());
}
Então, depois de adicionar 1 milhão de elementos ao meu cache, que eu disse para estourar em um disco que é grande o suficiente por ordens de magnitude, acabo com apenas 3276 itens no final. O que esta acontecendo aqui