Java中有SoftHashMap吗? [英] Is there a SoftHashMap in Java?

查看:580
本文介绍了Java中有SoftHashMap吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道java.util中有一个WeakHashMap,但由于它使用WeakReferences来处理所有事件,只有这个Map引用了它,所以在下一个GC循环中引用的对象将会丢失。所以如果你想要缓存随机数据,这几乎是没有用的,而随机数据很可能会在没有与其他时间硬连接的情况下再次被请求。最好的解决方案是使用SoftReferences代替的映射,但是我没有在Java RT Package中找到一个映射。 解决方案

编辑(2012年8月):

事实证明,目前最好的解决方案可能是Guava 13.0的 Cache 类,在番石榴的Wiki 中解释 - 这就是我将要使用的。
它甚至支持构建 SoftHashMap (请参阅 CacheBuilder.newBuilder()。softKeys()),但它可能不是你想要的,正如Java专家Jeremy Manson所解释的那样(下面你会发现这个链接)。






不是我知道(2008年11月),但你会发现一些在网上实现 SoftHashMap



像这样: SoftHashMap this one




编辑(2009年11月)

由于 Matthias 在评论中提及,谷歌Guava MapMaker 的确使用SoftReferences:


A ConcurrentMap 构建器,提供以下功能的任意组合:

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆