JAVA的四种引用类型的作用——强引用、软引用、弱引用、虚引用

Java四种引用类型,按照引用类型的强弱顺序分别是

  1. 强引用
  2. 软引用
  3. 弱引用
  4. 虚引用

背景:我们希望有这样一种场景像缓存一样,

即:在内存还足够时,希望能够保留这些对象,当内存不够时,则删除这些对象(当然是由垃圾回收完成)。

强引用:

即我们日常的操作,像:Object obj=new Object(); 有一个引用指向这个对象。
只要强引用还存在就不会被垃圾回收线程回收了。

软引用:

即那些不是必需的对象,进行垃圾回收时,如果内存够,被垃圾回收程序标记,并在第二次垃圾回收时进行回收,
如果内存不够就会被垃圾回收器直接回收掉,如果还是不够内存则抛出内存溢出异常。

         关键类:SoftReference;

弱引用:

即无论内存是否足够只要垃圾回收器触发,就会把弱引用引用的对象当作垃圾回收掉。

        关键类:WeakReference

虚引用:

 一个对象是否有虚引用存在,完全不会对对象的生存时间构成影响,也无法通过虚引用获得一个对象实例,
 为一个对象设置虚引用的唯一目的就是在这个对象被收集器回收时返回一个系统通知。
 虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,
 如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。

        关键类:Phantom Reference

总结

引用类型 垃圾回收时间 用途 生存时间
强引用 强引用还在就会一直存在 对象的常规状态 JVM停止运行
软引用 内存不足时 缓存 内存不足时
弱引用 正常垃圾回收 缓存 垃圾回收发生时
虚引用 正常垃圾回收 跟踪垃圾回收 垃圾回收发生时
展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值