集合系列 Map(十四):WeakedHashMap
2024-09-01 20:25:05
WeakedHashMap 也是 Map 集合的哈希实现,但其余 HashMap 的不同之处在于。其每个节点的 value 引用是弱引用,可以方便 GC 回收。
public class WeakHashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>
从 WeakHashMap 的定义来看,WeakHashMap 并没有继承 HashMap,这就意味着 WeakHashMap 必须自己重新实现一遍 HashMap 实现过的逻辑。这是因为 WeakedHashMap 中的引用是弱引用,所以有许多与 HasMap 不同的逻辑,所以需要自己写一遍实现。
要明白 WeekHashMap 的工作原理,还需要引入一个概念:弱引用(WeakReference)。我们都知道Java中内存是通过GC自动管理的,GC会在程序运行过程中自动判断哪些对象是可以被回收的,并在合适的时机进行内存释放。GC判断某个对象是否可被回收的依据是,是否有有效的引用指向该对象。如果没有有效引用指向该对象(基本意味着不存在访问该对象的方式),那么该对象就是可回收的。这里的“有效引用”并不包括弱引用。也就是说,虽然弱引用可以用来访问对象,但进行垃圾回收时弱引用并不会被考虑在内,仅有弱引用指向的对象仍然会被GC回收。
WeakHashMap 内部是通过弱引用来管理entry的,弱引用的特性对应到 WeakHashMap 上意味着什么呢?将一对key, value放入到 WeakHashMap 里并不能避免该key值被GC回收,除非在 WeakHashMap 之外还有对该key的强引用。
原理
博主偷懒了呢。
最新文章
- React JS的基本用法[ES5,纯前端写法]
- 【svn】SSL error: A TLS warning alert has been received的解决方法
- CSS居中布局总结【转】
- 今天被PHP短标签给坑了
- 025医疗项目-模块二:药品目录的导入导出-HSSF导入类的封装
- ASC码 .
- BZOJ 4300 绝世好题(位运算)
- PHP 使用用户自定义的比较函数对数组中的值进行排序
- 链表c语言实现
- Openjudge-计算概论(A)-求满足条件的3位数
- java监听器之实现在线人数显示
- linux 中的 vim 设置粘贴板
- 自学华为IoT物联网_11 物联网操作系统介绍
- 【转载】TensorFlow学习笔记:共享变量
- 修改jenkins发布账号信息
- 洛谷.2051.[AHOI2009]中国象棋(DP)
- css进阶篇
- 20165302Exp0 Kali安装 Week1
- 如何判断int类型相等
- 「Linux」centos7安装python
热门文章
- Android ListView的header footer设置visibility gone不起作用
- Chrome插件安装的3种方法,解决拖放不能安装的情况,并提供插件下载
- 使用 SecureRandom 产生随机数采坑记录
- 用launchscreen.storyboard适配启动图方法
- 转:FileSync plugin for Eclipse 安装注意事项 Eclipse文件同步插件
- RestTemplate常用的get和post带参数请求
- Rancher1-简单介绍-认识rancher
- iOS 手势及触摸
- SpringBoot使用freemarker模板
- [TimLinux] django model关于QuerySet