gpt4 book ai didi

java - Guava CacheBuilder 提前驱逐项目

转载 作者:行者123 更新时间:2023-12-01 21:10:38 26 4
gpt4 key购买 nike

我正在尝试创建一个简单的缓存,可以在其中存储 map 中的一些数据元素。我需要将这些数据保留大约 16 小时左右,之后我可以让旧项目过期。我正在实例化我的 LoadingCache:

 cache = CacheBuilder.newBuilder()
.concurrencyLevel(4)
.weakKeys()
.expireAfterWrite(16, TimeUnit.HOURS)
.build(
new CacheLoader<K, V>() {
public V load(K key) throws Exception {
return getByKey(key);
}
});

有一个进程每分钟向列表添加约 16 个项目。每隔 12 分钟左右,缓存就会被彻底清除。我对导致缓存被清除的原因感到困惑,远远早于在 expireAfterWrite() 中设置的时间。

最佳答案

我的猜测是 weakKeys() 负责。如果缓存是唯一引用这些项目的缓存,则垃圾收集可能会决定删除这些项目。来自 Guava 文档:

如果请求了weakKeys、weakValues或softValues,则垃圾收集器可能会回收缓存中存在的键或值。

关于java - Guava CacheBuilder 提前驱逐项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226532/

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