java-当值返回键时如何缓存弱引用?
作者:互联网
我正在使用番石榴的Cache< Key,Value>.每当无法再更强地访问Key时,就应该对垃圾回收项进行垃圾收集(总有一天……).如果没有从Value返回到Key的引用,则使用CacheBuilder.weakKeys()可以做到这一点.
我可以弱引用,但这随时可能使我的Value无效.我可以处理,但我不愿意.
我可以使用weakValues(),但是这可能导致非常早的驱逐,因为我的值仅在短时间内被引用.
也许我可以使用softValues(),但是SoftReferences是quite broken.
可能我弄错了….什么是正确的解决方案?
更新资料
只需在每个键中引用值即可实现我需要的功能,但这是不可能的,因为键不在我的控制之下.如果是这样,那么我就不需要缓存,不需要弱引用,也不需要任何东西.
这样,每个键将保持其相应的值可到达,即为“ 1”.同样,每个Value都将保持其Key的可访问性,但这没有问题,因为不再存在对Value的引用.
1一些到期会更好,但这不是必需的.
解决方法:
不幸的是,如果没有ephemerons,这是无法解决的.
标签:caching,guava,weak-references,java 来源: https://codeday.me/bug/20191101/1981074.html