什么是 WeakHashMap的起源?关于HashMap使用场景是什么?

2023-01-18 13:51:29 来源:创视网

什么是 WeakHashMap

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

HashMap使用场景

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

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

x 广告
x 广告

Copyright   2015-2022 财富赢家网版权所有  联系邮箱:920 891 263@qq.com

京ICP备2022016840号-48