ライトバック キャッシュを実装しようとしています。ソフト参照を使用しようとしていますが、参照が gcQueue に追加される前にクリアされ、参照対象オブジェクトにアクセスできないため、事後ライトバックの実行に問題があります。
ソリューション?
ライトバック キャッシュを実装しようとしています。ソフト参照を使用しようとしていますが、参照が gcQueue に追加される前にクリアされ、参照対象オブジェクトにアクセスできないため、事後ライトバックの実行に問題があります。
ソリューション?
例:
final ConcurrentMap<Long, Integer> cache = new MapMaker()
.softValues().expiration(20,TimeUnit.MINUTES)
.makeComputingMap(new Function<Long, Integer>() {
@Override
public Integer apply(Long arg0) {
return null;
}
});
SO マップメーカーに関する質問:
代替オプション:
guavaライブラリの一部でもあるSupplier クラスのmemoizeWithExpirationを使用します。