gpt4 book ai didi

java - 为什么 MapMaker.softKeys() 被弃用?

转载 作者:行者123 更新时间:2023-12-02 00:27:14 25 4
gpt4 key购买 nike

Possible Duplicate:
Why is softKeys() deprecated in Guava 10?

原因MapMaker.softKeys() JavaDoc 中已弃用:

Use softValues to create a memory-sensitive map, or weakKeys to create a map that doesn't hold strong references to the keys. This method is scheduled for deletion in January 2013.

This method is broken. Maps with soft keys offer no functional advantage over maps with weak keys, and they waste memory by keeping unreachable elements in the map. If your goal is to create a memory-sensitive map, then consider using soft values instead.

Specifies that each key (not value) stored in the map should be wrapped in a SoftReference (by default, strong references are used). Softly-referenced objects will be garbage-collected in a globally least-recently-used manner, in response to memory demand.

我不明白为什么软值优先于软键?有什么场景吗? MapMaker.softValues()仍然可用。谢谢!

最佳答案

包含软元素和弱元素的 map 有两个主要用例:

  • 缓存。具有软值的映射可以充当内存敏感的缓存。由于软引用的语义,当需要空闲内存时会收集缓存的条目。

  • 规范化映射。有时您需要将附加属性(值)与现有对象(键)相关联。这种关联不应该阻止 key 被收集,并且在收集 key 后它没有任何意义。这样的关联可以被实现为具有弱键的映射。

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

关于java - 为什么 MapMaker.softKeys() 被弃用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9758001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com