Java引用类型与WeakHashMap

Java中的引用类型

  • 强引用:直接引用,只要强引用存在就不回收

  • 软引用:描述一些非必须得对象,内存不足时可能会回收

  • 弱引用:下一次GC扫描到就会回收

  • 虚引用:用于在对象回收后执行清理操作,与引用队列配合使用

    • 虚引用在创建时可以指定引用队列

    • 在被回收之后可以通过队列判断回收状态并执行相关操作

WeakHashMap

概述:一个弱引用的HashMap,适用于需要缓存的场景,但是由于缓存有限,不能缓存所有的对象,需要可以清理的缓存。

WeakHashMap 内部是通过弱引用来管理entry的,弱引用的特性对应到 WeakHashMap 上意味着什么呢?将一对key, value放入到 WeakHashMap 里并不能避免该key值被GC回收,除非在 WeakHashMap 之外还有对该key的强引用

实现原理

  • 弱引用,在WeakHashMap的Entry上继承了WeakReference,如果这个对象没有被强引用,那么就是弱引用对象。

    private static class Entry<K,V> extends WeakReference<Object> implements Map.Entry<K,V>
posted @ 2024-08-24 10:32  枫叶藏在眼眸  阅读(22)  评论(0编辑  收藏  举报