グアバのものを使用してCache<Key, Value>
います。Key
強く到達できなくなったときはいつでも、キャッシュ エントリをガベージ コレクションする必要があります (いつか...)。back からback へCacheBuilder.weakKeys()
の参照がなければ、Usingはまさにそれを行います。Value
Key
この参照を弱くすることはできますが、これにより、いつでもValue
非常に無効になる可能性があります。私はそれを扱うことができましたが、私はしたくないです。
を使用することもできますweakValues()
が、私の値は短時間しか参照されないため、非常に早い段階でエビクションが発生する可能性があります。
を使用できるかもしれませんが、softValues()
かなり壊れています。SoftReference
おそらく私は何か間違っている....正しい解決策は何ですか?
アップデート
私が必要とすることは、への参照をValue
eachに入れるだけで達成できますが、私の管理下にないKey
ため、これは不可能です。Key
もしそうなら、キャッシュも弱い参照も何も必要ありません。
このようにして、それぞれKey
が対応するValue
到達可能性を維持しますが、これは問題ありません1。また、それぞれ Value
が到達可能な状態を維持しKey
ますが、 への既存の参照が長く存在しないため、これは問題ありませんValue
。
1いくらか有効期限が切れる方が良いですが、必須ではありません。