
Estou usando o ehcache (3.8.0) com Java (1.8.0_222) para armazenar valores no heap que são recuperados de um banco de dados SQL. O problema que estou tendo é que os valores armazenados são listas de objetos, e esses objetos também contêm listas e, com o tempo, as referências nessas listas mais internas parecem estar se tornando nulas. Tentei recriá-lo em um programa menor, sem sucesso, então acho que é algo estúpido que esqueci, em vez de um problema com o ehcache.
O código que estou usando para configurar o cache é
final long cacheSize = 1L;
final MemoryUnit cacheUnits = MemoryUnit.GB;
ResourcePoolsBuilder resourcePools = ResourcePoolsBuilder
.newResourcePoolsBuilder()
.heap(cacheSize, cacheUnits);
CacheConfigurationBuilder<Key, List<MyInterface>> cacheConfigurationBuilder = CacheConfigurationBuilder
.newCacheConfigurationBuilder(Key.class, (Class<List<MyInterface>>)(Class<?>)List.class, resourcePools)
.withSizeOfMaxObjectGraph(Long.MAX_VALUE);
cacheManager = CacheManagerBuilder
.newCacheManagerBuilder()
.withCache(cachesName, cacheConfigurationBuilder)
.build();
cacheManager.init();
cache = cacheManager.createCache(cacheName, cacheConfigurationBuilder);
Responder1
Resolveu o problema. Acontece que se você usar o heap, os objetos armazenados não serão imutáveis. Então o que estava acontecendo era que o programa estava pegando um objeto do cache, limpando alguns de seus campos quando terminava de usá-lo, e quando mais tarde pegou o objeto, esses campos ainda estavam limpos.