私は Guava Cache の例を調べていて、いくつかのエントリが何らかの条件でキャッシュから追い出されるのを防ぐ方法があるのだろうかと思いました。
同様に、エントリがアプリケーションによって使用されている場合、削除されることはほとんどありません!
Javadoc が述べているように、私が考えることができる1つの方法は、CacheBuilder.weigher()
サイズベースのエビクションでメソッドを使用することです:
エントリの重みがゼロの場合、サイズベースのエビクションは考慮されません (ただし、他の方法でエビクトされる可能性はあります)。
ただし、重みは最初に計算され、キャッシュ エントリの存続期間中は静的です。そのため、エントリがアプリケーションによって使用されなくなった場合、その重みをゼロに設定することはできません。
これを達成するための他の効率的な方法はありますか?同様に、削除する必要があるかどうかにかかわらず、特定のエントリを削除する前に Guava Cache によってメソッドが呼び出されます。
また、MVP アプリケーションで Presenter インスタンスをキャッシュするのは悪い考えですか? として、Guava Cache を使用して Presenter インスタンスをアプリケーションにキャッシュします!