gpt4 book ai didi

java - 未指定 maxSize 时,Google Guava Cache 逐出 SIZE 条目

转载 作者:搜寻专家 更新时间:2023-11-01 01:55:27 25 4
gpt4 key购买 nike

我正在使用 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());
}
}
};

最后,我只曾经get使用 get(K key, Callable<? extends V> valueLoader) 进入我的缓存

这是问题所在:使用上面的代码,我看到以下日志输出:

19:08:03.287 DEBUG [MyCache] - Entry evicted from cache: MyKey[123]=MyRecord@43ee148b - Reason: SIZE

当我没有使用 maximumSize() 时,为什么记录会从我的缓存中被逐出?在 CacheBuilder 调用中?我怀疑这与“重量”有关。如果是这样,关于 maxWeight() 我需要了解什么?在过期时间之前不清除缓存条目?

注意 我知道 Caches Explained在谷歌 Guava 网站上。

最佳答案

您的 expirationInterval 是否有可能意外地等于零?正如 expireAfterAccess 文档所述,“当 duration 为零时,此方法将交给 maximumSize(0)。”

关于java - 未指定 maxSize 时,Google Guava Cache 逐出 SIZE 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10988661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com