首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不推荐MapMaker.softKeys()?

为什么不推荐MapMaker.softKeys()?
EN

Stack Overflow用户
提问于 2012-03-18 11:41:42
回答 1查看 578关注 0票数 0

可能重复:

Why is softKeys() deprecated in Guava 10?

MapMaker.softKeys()在JavaDoc中被废弃的原因:

使用softValues创建内存敏感映射,或者使用weakKeys创建不包含对键的强引用的映射。该方法定于2013年1月删除。

这个方法是坏的,。与弱键的映射相比,带有软键的映射没有功能优势,它们通过在映射中保留不可访问的元素而浪费内存。如果您的目标是创建一个内存敏感映射,那么请考虑使用软值。

指定存储在映射中的每个键(而不是值)应包装在SoftReference中(默认情况下使用强引用)。作为对内存需求的回应,软引用的对象将被垃圾收集,在全球范围内使用最少。

我不明白为什么软值比软键更喜欢?有什么方案吗?MapMaker.softValues()仍然可用。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-18 12:09:36

包含软项和弱项的地图有两个主要用例:

  • Caches.具有软值的映射可以充当内存敏感缓存。由于软引用项的语义,当空闲内存为needed.
  • Canonicalizing映射时,缓存的引用项将被收集,。有时,需要将附加属性(值)与现有对象(键)关联起来。这种关联不应该阻止密钥被收集,并且在密钥被收集之后也没有意义。这样的关联可以实现为带有弱键的映射。

请注意,在后一种情况下使用软键而不是弱键没有任何意义,并导致不必要的内存使用,因此软键没有实际用途,这就是不推荐使用软键的原因。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9758001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档