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