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