栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么在Guava 10中不推荐使用softKeys()?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么在Guava 10中不推荐使用softKeys()?

我写这个问题的原因是,起初,我确实确实想知道为什么要这么做(因为我已有使用过的代码

softKeys
)。但是,反思的原因很明显,因此我决定将其发布在这里,以防其他人也使用
softKeys
并想知道同一件事。

简而言之,原因是

softKeys
从一开始就没有任何意义。因此,最初包含它本身就是一个错误,Guava开发人员正在通过弃用纠正此错误。

通常,如果要在所有强引用都消失之后让对象停留一会儿,则可以使用软引用。相反,在使用弱引用时,通常在没有强引用或软引用的情况下立即收集对象。这对于您要暂时保留的缓存
很有用,因此使用相应键进行的查找将“恢复”该值的强引用。

但是,此行为对键没有任何意义:

  • 由于
    softKeys
    weakKeys
    映射使用基于身份的查找,因此获取感兴趣条目的唯一方法是对其键进行强引用。†因此,一旦没有强大的键引用剩余,则该条目实际上将无效(无法恢复)。
  • 之间的唯一区别
    softKeys
    ,并
    weakKeys
    为一个条目保留在地图上所有关键的强引用了多久都没有了。由于这样的条目无论如何都是死的,因此使用
    softKeys
    而不是
    weakKeys
    仅仅延迟条目的逐出是没有充分理由的。

因此,大多数情况下,遇到使用的代码时,

softKeys
更合适的替代方法是
weakKeys

†我没有考虑通过迭代或除基于键的查找以外的其他方法获取条目的情况,因为映射主要是基于键的操作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号