現在、次のように構成されているキャッシュを使用しています。
private final Cache<K, V> storage = CacheBuilder.<K, V>newBuilder()
.maximumSize(100)
.removalListener(new RemovalListener<K, V>() { ... })
.build();
ノードを挿入するとき、ノードの「最後に使用された」値が常にキャッシュ内の子よりも新しいように、すべての祖先にも触れます。
しかし、私たちが見つけたのは、子がまだキャッシュにあるときに、何らかの形で親を追い出しているということです。RemovalListener
子は親への参照を維持し、 は親を閉じ、その子孫を引き続き使用するために必要なファイル ハンドルを閉じるため、これは私たちにとって問題です。
この種の依存関係を維持する適切な方法はありますか?
そうでない場合、エントリが途中で削除されないようにするために入力できる最大サイズの値は少なくともありますか? 最大サイズとして 100 を渡していますが、削除されたアイテムのいくつかは、最近使用されたアイテムの上位 10 位に含まれていました。