
Estoy usando ehcache (3.8.0) con Java (1.8.0_222) para almacenar valores en el montón que se recuperan de una base de datos SQL. El problema que tengo es que los valores almacenados son listas de objetos, y esos objetos también contienen listas y, con el tiempo, las referencias en esas listas más internas parecen volverse nulas. Intenté recrearlo en un programa más pequeño sin éxito, así que supongo que es algo tonto que pasé por alto en lugar de un problema con ehcache.
El código que estoy usando para configurar el caché es
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);
Respuesta1
Resolvió el problema. Resulta que si usas el montón, los objetos almacenados no son inmutables. Entonces, lo que estaba sucediendo era que el programa estaba tomando un objeto del caché, borrando algunos de sus campos cuando terminó, y luego, cuando más tarde tomó el objeto, esos campos aún estaban borrados.