作用:用来判断对象是否可以进行垃圾回收
强引用
- 就是我们平时创建的普通对象
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中来控制对外内存