いくつかのデータ要素をマップに格納できる単純なキャッシュを作成しようとしています。このデータを約 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);
}
});
1 分ごとに最大 16 個のアイテムをリストに追加するプロセスがあります。約 12 分ごとに、キャッシュが完全に消去されます。expireAfterWrite() で設定された時間よりもかなり前に、キャッシュが一掃される原因に困惑しています。