美文网首页
强引用、软引用、弱引用、虚引用

强引用、软引用、弱引用、虚引用

作者: 策马踏清风 | 来源:发表于2020-04-13 16:18 被阅读0次

强引用

  1. 平常使用的Object a = new Object()就是强引用
  2. JVM内存不足时宁愿抛出OOM也不会随意回收存活的对象

软引用

  1. 通过SoftReference实现
  2. 只有内存不足时才会试图回收软引用指向的对象
  3. 如果软引用指向的对象被回收了,SoftReference对象就会被加入到ReferenceQueue队列中。使用poll()方法可以检查对象是否被回收,此方法返回队列前面的一个SoftReference对象
  4. 可以做缓存

弱引用

  1. 通过WeakReference实现
  2. GC检查到只有弱引用指向的对象就会清除此对象(即不能维护调用链的存活判断)
  3. 同样可以和一个引用队列ReferenceQueue关联
  4. 应用:ThreadLocalkey就是弱引用,不会因为key有依赖导致对象不被GC

虚引用

  1. 也叫幻想引用
  2. 使用PhantomReference实现
  3. 无法通过虚引用操作对象
  4. 仅能通过关联的ReferenceQueue知道对象是否被回收

相关文章

网友评论

      本文标题:强引用、软引用、弱引用、虚引用

      本文链接:https://www.haomeiwen.com/subject/ukstvhtx.html