我们在日常工作中,对于一些没有固定销毁时间点的对象,通常会考虑用WeakHashMap 来协助自动销毁对象。 举个例子,根据不同的request出错信息的key,自动找到相关的翻译内容。就是常说的国际化,I18n。软件出错的信息是不固定的,如果每次load完内容,就销毁又性能不高。所以通常想法是做 ...
分类:
其他好文 时间:
2021-04-26 12:58:46
阅读次数:
0
Java中的集合(十二) 实现Map接口的WeakHashMap 一、WeakHashMap简介 WeakHashMap和HashMap一样,WeakHashMap也是一个哈希表,存储的也是键值对(key-value)映射,且键值都可以为null。 不过WeakHashMap的键是“弱键”。在 We ...
分类:
编程语言 时间:
2020-05-15 00:24:22
阅读次数:
60
WeakHashMap的键是弱键。在 WeakHashMap 中,当某个键不再正常使用时,会被从WeakHashMap中被自动移除。更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为可终止的,被终止,然后被回收。某个键被终止时,它对应的键值对也就从映射中有效地移... ...
分类:
其他好文 时间:
2020-04-02 10:28:34
阅读次数:
62
本篇文章尝试从What、Why、How这三个角度来探索Java中的弱引用,理解Java中弱引用的定义、基本使用场景和使用方法。由于个人水平有限,叙述中难免存在不准确或是不清晰的地方,希望大家可以指出,谢谢大家:) 1. What——什么是弱引用?** Java中的弱引用具体指的是java.lang. ...
分类:
编程语言 时间:
2020-01-13 22:12:52
阅读次数:
113
HashMap 内部结构 内部是一个Node数组,每个Node都是链表的头,当链表的大小达到8之后链表转变成红黑树。 put操作 流程可以概括为:如果Node数组为空则先按照默认容量初始化数组。利用计算得到的hsah值确定数组下标, 1. 如果下标所在位置的Node为null,则直接新创建节点放在此 ...
分类:
其他好文 时间:
2019-12-17 17:53:14
阅读次数:
98
转自:Java极客技术公众号 在 Map 家族中,WeakHashMap 是一个很特殊的成员,从名字上看与 HashMap 相关,但是与 HashMap 有着很大的差别,翻译成中文后表示弱 HashMap,俗称缓存 HashMap。 01、摘要 在集合系列的第一章,咱们了解到,Map 的实现类有 H ...
分类:
其他好文 时间:
2019-10-27 12:53:02
阅读次数:
60
本文首先针对 Java 集合接口进行了一些介绍,并对这些接口的实现类进行详细描述,包括 LinkedList、ArrayList、Vector、Stack、Hashtable、HashMap、WeakHashMap 等,然后对一些实现类的实现方式和使用经验进行讲解,同时重点介绍 WeakHashMa ...
分类:
编程语言 时间:
2019-07-16 21:31:57
阅读次数:
129
本文首先针对Java集合接口进行了一些介绍,并对这些接口的实现类进行详细描述,包括LinkedList、ArrayList、Vector、Stack、Hashtable、HashMap、WeakHashMap等,然后对一些实现类的实现方式和使用经验进行讲解,同时重点介绍WeakHashMap。希望通过本文介绍,可以让读者对集合的操作方式、注意事项等有一些了解。在实际的项目开发中会有很多的对象,如何
分类:
编程语言 时间:
2019-07-16 21:29:46
阅读次数:
115
问题由来 数组为基础实现的集合在退出元素时,并不会将引用指向空指针,过期引用存在对象便不会被回收。 措施 1.WeakHashMap当其中的key没有再被外部引用时,就会被回收。ThreadLocal就用到了WeakHashMap 2.LinkedHashMap的removeEldestEntry方 ...
分类:
其他好文 时间:
2019-06-09 09:46:47
阅读次数:
145
平时我们使用最多的数据结构肯定是 HashMap,但是在使用的时候我们必须知道每个键值对的生命周期,并且手动清除它;但是如果我们不是很清楚它的生命周期,这时候就比较麻烦;通常有这样几种处理方式: 由一个线程定时处理,可以是 或者 ; 利用重写 ,实现 FIFOCache 或者 LRUCache;可以 ...
分类:
其他好文 时间:
2019-02-12 21:28:24
阅读次数:
172