首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WeakHashMap减少内存使用

使用WeakHashMap减少内存使用
EN

Stack Overflow用户
提问于 2010-03-18 21:19:40
回答 2查看 703关注 0票数 1

WeakHashMap.html的Javadoc中,它说

“WeakHashMap中的每个键对象都作为弱引用的引用间接存储。因此,只有在垃圾收集器清除了地图内外对它的弱引用之后,才会自动删除键。”

然后

请注意,值对象可以通过WeakHashMap本身间接地引用其键;也就是说,值对象可以强烈地引用其他一些键对象,这些键对象的关联值对象反过来强烈地引用第一个值对象的键。

但是,在WeakHashMap中不应该同时使用键和值作为弱引用吗?也就是说,如果内存不足,GC将释放值对象所持有的内存(因为在大多数情况下,值对象最有可能占用比关键对象更多的内存)?

如果GC释放值对象,那么键对象也可以是空闲的吗?

基本上,我正在寻找一个HashMap,它将在内存不足时减少内存使用(如果有必要,GC收集值和关键对象)。

在Java中有可能吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-18 21:22:27

弱引用不适合缓存-- NetBeans会这么做,而且会变得很愚蠢。

SoftReference是你想要的。实际上很难把它做对--所以复制别人的解决方案吧。有些人建议自己明确地管理缓存。

Reference只使用单个引用。有人提议在Java中添加“暂存表”,但我还没有看到有任何实现可以这样做。

票数 1
EN

Stack Overflow用户

发布于 2010-03-18 21:23:11

其思想是,您可以使用此Map作为“查找”数据结构,它只保留仍然可以引用的键值对(通过键)。不过,虽然基本想法很好,但我记得它并没有我希望的那样有用。

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

https://stackoverflow.com/questions/2473410

复制
相关文章

相似问题

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