我正在使用番石榴的Cache<Key, Value>
. 只要Key
不再强可达,缓存条目就应该被垃圾收集(有一天......)。CacheBuilder.weakKeys()
如果没有从backValue
到Key
.
我可以使这个参考变弱,但这可能随时使我的Value
完全无效。我可以处理它,但我不想这样做。
我可以使用weakValues()
,但这可能会导致很早就被驱逐,因为我的价值观只在短时间内被引用。
也许我可以使用softValues()
,但SoftReference
s很破。
可能我弄错了……正确的解决方案是什么?
更新
我需要的只是通过在Value
each中添加一个引用来实现Key
,但这是不可能的,因为Key
不在我的控制之下。如果是,那么我不需要缓存,不需要弱引用,什么都不需要。
这样,每个都Key
将保持其对应的Value
可达性,这很好1。此外,每个都 Value
将保持其Key
可访问性,但这没有问题,因为不再存在对Value
.
1一些到期会更好,但不是必须的。