weakHashMap
作者:互联网
文章目录
weakHashMap
简介
- 其中没有特殊的数据结构,主要是为了优化jvm,是jvm在垃圾回收时智能的回收无用的对象
- 主要适用于缓存的场景,当一个键对象被垃圾回收器回收时,响应的值对象从map中被删除,
- 能够节约空间,缓存一些非必要的数据
- weakhashmap与其他map的区别在于它的key是一个弱引用类型,而其他的map的key是一个强引用类型
引用类型
1、分类
-
强引用(StrongReference)
- 通常用new形式创建的对象都是强引用,
- 作用的对象都不会被GC清理
- 即使内存不足抛出OOM(OutOfMememony)也不会被清理
-
软引用(SoftRefene)
-
作用的对象在GC且内存充足时,不会回收该对象,内存不足就会被回收
ReferenceQuene<A> quene=new RefenceQuene<A>(); Reference<A> w=new SoftReference<A>(new A(),quene); System.out.println(w.get());//获取的是地址信息 System.out.println(w.isEnquened());//false System.out.println(quene.poll());//null //此处需要的内存,内存受限,不够用了,因此出发GC,回收软引用对象 byte[] array=new byte[7*1024+500*1024]; System.out.println(array[0]); System.gc(); try{ thread.sleep(2000); }catch(InterruptedException e){ e.printStackTrrace(); } System.out.println(w.get()); System.out.println(w.isEnquened()); System.out.pringln(quene.poll());
-
-
弱引用(WeakReference)
- 作用对象发生GC操作时,不管内存是否充足,都会回收作用的对象
-
虚引用(phantonReference)
- 一个对象是否有虚引用的存在,不会对对象生存时间造成影响,也不能取得一个对象的实例,它的存在可以用来判断对象是否被回收
2、注意点
-
软、弱、虚引用这些都存在java.lang.ref包中,父类是Reference类是抽象父类的构造函数;
//Reference为强引用指向的对象 Reference(T reference){ this(reference,null); } Reference(T reference.ReferenceQuene<? super T>quene){ this.reference=reference; this.quene=(quene==null)?RefenceQuene.NULL:quene; }
标签:weakHashMap,quene,对象,System,引用,println,out 来源: https://blog.csdn.net/m0_52410507/article/details/120925249