Guava Cache CacheStats全为零

Ada*_*s.H 8 java caching guava

我正在使用Guava Cache lib,我想检查缓存的统计信息,这是我的代码:

refreshCache = CacheBuilder.newBuilder()
           .refreshAfterWrite(1, TimeUnit.MINUTES)
           .maximumSize(5)
           .recordStats()
           .build(
               new CacheLoader<String, Map<String,Object>>() {
                 public Map<String,Object> load(String key) throws Exception {
                     loader();
                 }
               });
        stats = refreshCache.stats();
        delta = refreshCache.stats()
                .minus(stats);

}

 logger.info("Stats:{}",stats);
 logger.info("delta:{}",delta);
Run Code Online (Sandbox Code Playgroud)

我打电话recordeStats()来激活统计数据,但是当我打印统计数据时,它全部为0.在此输入图像描述

Rol*_*ger 32

您忘记通过添加recordStats()来激活缓存记录CacheBuilder.newBuilder().

  • 这个问题碰巧是,虽然我在检查缓存之前正在加载东西。我忘了我必须在构建时指定这个!谢谢! (2认同)

Ern*_*oso 6

根据JavaDoc:

缓存统计信息根据以下规则递增:

  • 当缓存查找遇到现有缓存条目时,hitCount会递增.
  • 当缓存查找首次遇到丢失的缓存条目时,将加载新条目.
  • 成功加载条目后,missCount和loadSuccessCount递增,并将总加载时间(以纳秒为单位)添加到totalLoadTime.
  • 当加载条目时抛出异常时,missCount和loadExceptionCount会递增,并且总加载时间(以纳秒为单位)将添加到totalLoadTime.
  • 遇到仍在加载的丢失缓存条目的缓存查找将等待加载完成(无论是否成功),然后递增missCount .--
  • 当一个条目从缓存中逐出时,evictionCount会递增.
  • 高速缓存条目无效或手动删除时,不会修改任何统计信息.
  • 在缓存的asMap视图上调用的操作不会修改任何统计信息.

查找特别定义为调用其中一个方法LoadingCache.get(Object),LoadingCache.getUnchecked(Object),Cache.get(Object,Callable)或LoadingCache.getAll(Iterable).