En la Biblioteca de Guava, estoy confundido acerca de por qué Cache.asMap()
no es coherente con Cache.size()
, a menos que se llame Cache.cleanUp()
.Cache.asMap() no es consistente con Cache.size()?
Cache<Object, Object> cache = CacheBuilder.newBuilder()
.expireAfterWrite(1, TimeUnit.SECONDS)
.build();
cache.get(...);
...
//After some seconds, all entries are expired.
//cache.asMap() is EMPTY Map, but cache.size() != 0
Así que mi pregunta: ¿Es error que Cache.asMap()
no es coherente a Cache.size()
? Aunque noto el Javadoc de Cache.size()
es:
/**
* Returns the **approximate** number of entries in this cache.
*/
que sólo puede adivinar que está relacionado con un entorno concurrente. Y qué Cache.cleanUp()
hacen exactamente?
Gracias, Charles! Revisé el código fuente aproximadamente, 'size()' solo resume el conteo de Segment, como mencionaste- "tonto para recorrer todo el caché solo para obtener un estimado de tamaño más preciso" :) ¡Diseño altamente sofisticado! –