其他分享
首页 > 其他分享> > weakHashMap

weakHashMap

作者:互联网

文章目录

weakHashMap

简介

  1. 其中没有特殊的数据结构,主要是为了优化jvm,是jvm在垃圾回收时智能的回收无用的对象
  2. 主要适用于缓存的场景,当一个键对象被垃圾回收器回收时,响应的值对象从map中被删除,
  3. 能够节约空间,缓存一些非必要的数据
  4. weakhashmap与其他map的区别在于它的key是一个弱引用类型,而其他的map的key是一个强引用类型

引用类型

1、分类
  1. 强引用(StrongReference)

    • 通常用new形式创建的对象都是强引用,
    • 作用的对象都不会被GC清理
    • 即使内存不足抛出OOM(OutOfMememony)也不会被清理
  2. 软引用(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());
      
      
  3. 弱引用(WeakReference)

    • 作用对象发生GC操作时,不管内存是否充足,都会回收作用的对象
  4. 虚引用(phantonReference)

    • 一个对象是否有虚引用的存在,不会对对象生存时间造成影响,也不能取得一个对象的实例,它的存在可以用来判断对象是否被回收

2、注意点

  1. 软、弱、虚引用这些都存在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