反正有没有告诉过Guava Cache是​​否被禁用了stats?

时间:2015-08-07 05:27:00

标签: java caching guava

  

recordStats
  public CacheBuilder<K,V> recordStats()
  在缓存操作期间启用CacheStats的累积。 如果没有此Cache.stats(),则所有统计信息都会返回零。请注意,记录统计信息需要对每个操作执行记录,因此会对缓存操作造成性能损失。

来自[CacheBuilder.recordStats()] [2]的JavaDocs,重点补充。

据我所知,没有办法区分从未调用过的缓存和未调用recordStats()而构建的缓存,以启用统计信息的累积。 Cache界面本身似乎没有任何迹象。我错了吗?

如果没有记录这样的方法或标志,为什么不呢? 10次​​中有9次,显然你的缓存实际上是被调用的,但我今天浪费了一个小时试图找出为什么我的缓存没有记录统计数据......

1 个答案:

答案 0 :(得分:2)

No, and unfortunately there's not going to be.

  

kevinb9n评论2015-07-30T18:17:42Z
  我记得在过去几年前是否试图改变这种行为的过程令人痛苦,不幸的是我们已经觉得为时已晚。此时添加新的接口方法也是不可行的。对不起。

     

使用接口 no 更改是向后兼容的;它必须始终打破消费者或实施者。在这种情况下,在Guava外部实现Cache的每个具体类都会破坏。在我们使用Java 8之后,我们可以通过提供合理的&#34;默认&#34;来添加接口方法。实现。但请注意,在这种情况下,我们可以做的最好的事情可能是throw new UnsupportedOperationException();,这并不令人兴奋。