Java Google Guava缓存在未指定maxSize时逐出大小项
我正在使用Google GuavaJava Google Guava缓存在未指定maxSize时逐出大小项,java,guava,Java,Guava,我正在使用Google GuavaCacheBuilder创建一个Cache实例。我的代码如下所示: return CacheBuilder.newBuilder() .initialCapacity(initialCapacity) .expireAfterAccess(expirationInterval, TimeUnit.SECONDS) .removalListener(LOGGING_AUTOEVICTION_O
CacheBuilder
创建一个Cache
实例。我的代码如下所示:
return CacheBuilder.newBuilder()
.initialCapacity(initialCapacity)
.expireAfterAccess(expirationInterval, TimeUnit.SECONDS)
.removalListener(LOGGING_AUTOEVICTION_ONLY_REMOVAL_LISTENER)
.build();
顾名思义,我的删除侦听器是:
private static final RemovalListener<MyKey, MyRecord> LOGGING_AUTOEVICTION_ONLY_REMOVAL_LISTENER
= new RemovalListener<MyKey, MyRecord>() {
@Override
public void onRemoval(RemovalNotification<MyKey, MyRecord objectObjectRemovalNotification) {
if (objectObjectRemovalNotification.wasEvicted()) {
log.debug("Entry evicted from cache: {} - Reason: {}", objectObjectRemovalNotification, objectObjectRemovalNotification.getCause());
}
}
};
private static final RemovalListener日志记录\u自动逐出\u仅\u删除\u侦听器
=新的RemovalListener(){
@凌驾
删除时公共无效(RemovalNotification您的过期时间间隔
是否可能意外等于零?正如expireAfterAccess
文档,“当持续时间
为零时,此方法将切换到最大大小(0)
”不,不管重量如何,这都不应该发生。你可以构建一个SSCCE来演示错误吗?此外,这似乎更适合作为错误报告,而不是作为一个问题。Bleh。进一步的问题:你使用的是哪种版本的番石榴?我正在查看源代码,这似乎非常简单可能。哦。我甚至没有想到这一点;事实上,这似乎是可能的。就是这样。我忽略了将过期设置为“0”与“maximumSize(0)”同义我现在将expiration设置为Long.MAX_值,尽管我怀疑规范的解决方案是使用Ticker。想法?Ticker仅用于测试目的。与其将expiration设置为MAX_值,不如根本不设置它。