强软弱虚引用

133 阅读1分钟

作用:用来判断对象是否可以进行垃圾回收

强引用

  • 就是我们平时创建的普通对象
Student stu = new Student();

这就是我们平时最常见的对象,强引用就表示如果对象还在使用,则发生GC时不会被回收

软引用

SoftReference<Student> studentSoftReference = new SoftReference<Student>(new Student());

软引用则是被SoftReference包裹的对象
作用:当内存不足时,会触发GC,GC之后还是空间不足,就会进行二次回收,清理软引用对象 如果内存足够,则不进行回收 可用于大对象的缓存,如图片

弱引用

WeakReference<Student> studentWeakReference = new WeakReference<>(new Student());

弱引用,比软引用更容易被回收,ThreadLocal中就使用到了弱引用 当发生GC时,无论内存是否足够,都会被清理掉,只能存活到下一次GC之前

虚引用

PhantomReference<Student> studentPhantomReference = new PhantomReference<>(new Student(),
      new ReferenceQueue<>());

又被叫做幻影引用,无法通过虚引用来获取对象,也就是说在实际业务开发程序员中不会用到。
大致作用是当发生GC时,会把回收的通知放到ReferenceQueue队列当中
实际应用在NIO中来控制对外内存