Java中有SoftHashMap吗?

Java中有SoftHashMap吗?,第1张

Java中有SoftHashMap吗?

编辑(2012年8月):

事实证明,目前最好的解决方案可能是Guava
13.0的

Cache
类,在Guava的Wiki上进行了解释-
这就是我要使用的。它甚至支持构建一个
SoftHashMap
(请参阅参考资料
CacheBuilder.newBuilder().softKeys()
),但这可能不是您想要的,正如Java专家Jeremy
Manson解释的那样(在下面您将找到链接)。


我不知道(2008年11月),但是您可以

SoftHashMap
在网上找到一些实现。

喜欢这个:

SoftHashMap
或者这个。


编辑(2009年11月),
正如Matthias在评论中提到的那样,Google
Guava
MapMaker
确实使用了SoftReferences:

一个

ConcurrentMap
制造商,提供的这些特征的任意组合:

  • 软键或弱键,
  • 软值或弱值,
  • 定时到期,以及
  • 按需计算值。

如该线程中所述,另一个JSR166y候选人:

jsr166y.ConcurrentReferenceHashMap

它为Google实现提供了一个替代的并发参考映射(依赖于后台线程逐出条目)


编辑(2012年8月)

Google实现仅在请求条目的过期时间时才使用后台线程。特别是,它仅使用

java.util.Timer
,而不像具有单独的后台线程那样具有侵入性。

杰里米·曼森(Jeremy
Manson)建议,对于任何缓存,都应使用此功能以避免SoftReference的危险:http : //jeremymanson.blogspot.de/2009/07/how-
hotspot-decides-to-clear_07.html

Apache
Commons提供了另一种实现,即org.apache.commons.collections.map.ReferenceMap
; 它不支持定时删除,但是它支持选择是按身份还是按相等来比较密钥。此外,此实现不是并发的-可以使其同步,但是在来自多个线程的访问下效果不佳。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5489617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存