首页 >> 大全

WeakHashMap解析

2023-09-17 大全 22 作者:考证青年

一、什么是

Map 的子类常见的有、、、等。,直译就是:虚弱的 。从名字可得知其和 有关,确实如此, 功能几乎和 一致。Weak,联想java.lang.ref包下的弱引用(),由此这里面还牵扯到了一种弱引用结构。

二、 和 的区别

先看下 和 中单个对象的组成:

解析是什么意思__解析几何

.Entry 和 .Node 的不同点在于,.Entry 继承了。

弱引用的生存期特别短。垃圾回收的时候,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。

想象一下如下场景:

调用两次 size():第一次为 10,第二次就为 8 了。两次调用 ():第一次返回 false,第二次返回 true。两次调用 ():第一次返回 true,第二次返回 false。两次调用 get():第一次返回一个 value,第二次返回 null。 三、使用场景

在如今的并发泛滥的大环境下,大家应该都用过缓存,缓存都是放在内存中的,而内存几乎是计算机中最宝贵也是最稀缺的资源,所以需要谨慎的使用,不然很容易就出现OOM。缓存的主要作用是为了更快的处理业务、降低服务器的压力,那么就要保证缓存命中率,这里假设整个缓存是一个 key-value 结构的(以键值对缓存为例), 作为强引用对象在没有主动将 key 删除时是不会被 JVM 回收的,这样 中的对象就会越积越多直到 OOM 错误;那么如何做到既让缓存的命中率高又不占用那么多的内存,这里就可以采用 ,当然不会有 100% 的命中率(假设内存足够),但是在保证程序正常的前提下更好的实现了缓存这套解决方案。

内部是通过弱引用来管理 Entry 的,弱引用的特性对应到 上意味着什么呢?将一对 key-value 放入到 里并不能避免该 key 值被 GC 回收(除非在 之外还有对该 key 的强引用),故内存问题也可以解决。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了