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的强引用。

原理

博主偷懒了呢。

最新文章

  1. React JS的基本用法[ES5,纯前端写法]
  2. 【svn】SSL error: A TLS warning alert has been received的解决方法
  3. CSS居中布局总结【转】
  4. 今天被PHP短标签给坑了
  5. 025医疗项目-模块二:药品目录的导入导出-HSSF导入类的封装
  6. ASC码 .
  7. BZOJ 4300 绝世好题(位运算)
  8. PHP 使用用户自定义的比较函数对数组中的值进行排序
  9. 链表c语言实现
  10. Openjudge-计算概论(A)-求满足条件的3位数
  11. java监听器之实现在线人数显示
  12. linux 中的 vim 设置粘贴板
  13. 自学华为IoT物联网_11 物联网操作系统介绍
  14. 【转载】TensorFlow学习笔记:共享变量
  15. 修改jenkins发布账号信息
  16. 洛谷.2051.[AHOI2009]中国象棋(DP)
  17. css进阶篇
  18. 20165302Exp0 Kali安装 Week1
  19. 如何判断int类型相等
  20. 「Linux」centos7安装python

热门文章

  1. Android ListView的header footer设置visibility gone不起作用
  2. Chrome插件安装的3种方法,解决拖放不能安装的情况,并提供插件下载
  3. 使用 SecureRandom 产生随机数采坑记录
  4. 用launchscreen.storyboard适配启动图方法
  5. 转:FileSync plugin for Eclipse 安装注意事项 Eclipse文件同步插件
  6. RestTemplate常用的get和post带参数请求
  7. Rancher1-简单介绍-认识rancher
  8. iOS 手势及触摸
  9. SpringBoot使用freemarker模板
  10. [TimLinux] django model关于QuerySet