java有四种引用类型,分别是强引用、软引用、弱引用、虚引用。
背景:我们希望有这样一种场景像缓存一样,
即:在内存还足够时,希望能够保留这些对象,当内存不够时,则删除这些对象(当然是由垃圾回收完成)。
四种引用的强度:强引用(Strong Reference)>软引用(Soft Reference)>弱引用(Weak Reference)>(Phantom Reference)
强引用:即我们日常的操作,像:Object obj=new Object(); 有一个引用指向这个对象。
只要强引用还存在就不会被垃圾回收线程回收了。
软引用:即那些不是必需的对象,在发生内存溢出之前,被垃圾回收程序标记,并在第二次垃圾回收时进行回收,如果还是不够内
存则抛出内存溢出异常。
关键类:SoftReference;
弱引用:即无论内存是否足够只要垃圾回收器触发,就会把弱引用引用的对象当作垃圾回收掉。
关键类:WeakReference
虚引用:一个对象是否有虚引用存在,完全不会对对象的生存时间构成影响,也无法通过虚引用获得一个对象实例,为一个对象
设置虚引用的唯一目的就是在这个对象被收集器回收时返回一个系统通知。
关键类:Phantom Reference