1.强引用
只要一个对象具有强引用,垃圾回收器永远不会回收它。
2.软引用(SoftReference)
内存充足时,垃圾回收器不会回收具有软引用的对象,内存不足时,垃圾回收器会回收具有软引用的对象。(可以做缓存)
使用方法:
SoftReference ref = new SoftReference(T reference);
//内部包含有指向T类型对象的引用
ref.get() //获得保存的T类型对象的引用
应用场景:内存敏感的高速缓存。
3.弱引用(WeakReference)
只要垃圾回收线程发现具有弱引用的对象,就会回收。
使用方法同软引用。
4.虚引用(PhantomReference)
与软引用和弱引用的区别:虚引用必须和引用队列联合使用,通过虚引用无法得到虚引用指向的对象。
用途:跟踪被垃圾回收器回收的对象。通过判断引用队列中是否有虚引用,了解被引用的对象是否将被回收。JVM将虚引用插入到引用队列时,虚引用指向的对象内存还是存在的。