Java Google Guava缓存在未指定maxSize时逐出大小项

Java Google Guava缓存在未指定maxSize时逐出大小项,java,guava,Java,Guava,我正在使用Google GuavaCacheBuilder创建一个Cache实例。我的代码如下所示: return CacheBuilder.newBuilder() .initialCapacity(initialCapacity) .expireAfterAccess(expirationInterval, TimeUnit.SECONDS) .removalListener(LOGGING_AUTOEVICTION_O

我正在使用Google Guava
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_值,不如根本不设置它。