亲爱的网友,你能搜到本文中,说明您很希望了解这个问题,以下内容就是我们收集整理的相关资料,希望该答案能满足您的要求
Weakhashmap是一种特殊的hashmap,它采用弱引用(由JVM实现的、可以在JVM垃圾收集期间被清除的引用)作为key,由于其结构,当没有指向key的普通引用时,key和其所关联的value将被垃圾回收。
它有以下几个特点:
1、类似于HashMap,Weakhashmap也是一种映射容器,它可以将key和value相关联,而且key和value可以是任意类型的对象,例如字符串、整数、对象等;
2、不同于HashMap,Weakhashmap将key保存为弱引用,所以如果没有其他普通引用指向key,那么垃圾收集器GC在运行时就会回收key和其关联的value;
3、与HashMap相似,Weakhashmap也有实现`hashCode()`以及`equals()`方法,它实际使用`WeakReference`对对象进行弱引用;
4、Weakhashmap可以有效避免内存泄漏的问题以及无用数据的保存;
5、Weakhashmap的实现非常的复杂,它不仅用来保存键值对,还需要实现记录key的状态,不然很容易引起Bug;
6、Weakhashmap不能继承AbstractMap,因为AbstractMap中有许多操作完成后都会直接清除key,而Weakhashmap中的key不一定会被清除,所以AbstractMap不能被继承;
7、Weakhashmap建议使用Jdk1.2或更高版本的Jdk进行编译,这样可以获得最佳的运行性能;
WeakHashMap类是基于垃圾回收而不是引用计数设计的一种地图,其特点是其条目有被孤立的风险,即在WeakHashMap中添加一个键值对时,就像在一个WeakReference中引用一样,当键不再被引用时,该键和键之后的键值对将被回收。
1.WeakHashMap类的实现原理: WeakHashMap的实现原理是基于一个垃圾收集机制,该机制使得被它所引用的对象可以被垃圾回收,并且也可以在垃圾回收发生之前,将其及其绑定的键值对从WeakHashMap中移除出来。
2.WeakHashMap类的特点:WeakHashMap类具有键不可变,不保存指向它们的强引用的特点,它不一定马上回收被它所引用的对象,只要垃圾收集器准备回收某个对象时,它就会被回收。所以在WeakHashMap中加入键值对,就像在一个WeakReference中引用一样,当键不再被引用时,该键及其之后的键值对就会在垃圾回收之前从WeakHashMap中移除出来。
3.WeakHashMap类的优点:WeakHashMap类与HashMap类相比,最显著的优点就是它可以避免内存泄露问题,对于对象逃逸问题和无用对象问题,WeakHashMap类能够比HashMap类更好地处理它们,可以在应用中节省很多内存。
4.WeakHashMap类的缺点:WeakHashMap类虽然有许多优点,但也有其缺点,一是WeakHashMap类不能直接使用null做为键,二是WeakHashMap类不提供同步操作,如果需要对WeakHashMap的操作是线程安全的,就需要使用Collections的同步工具进行同步操作。
不知这篇文章是否帮您解答了与标题相关的疑惑,如果您对本篇文章满意,请劳驾您在文章结尾点击“顶一下”,以示对该文章的肯定,如果您不满意,则也请“踩一下”,以便督促我们改进该篇文章。如果您想更进步了解相关内容,可查看文章下方的相关链接,那里很可能有你想要的内容。最后,感谢客官老爷的御览