Java的四大引用


强引用

大部分引用都是强引用,new一个对象并用变量保存就是强引用

如果一个对象具有强引用,就不会被垃圾收集器回收

软引用

如果一个对象只有软引用,说明这个对象是可有可无的

如果内存够用, 垃圾收集器就不会回收;如果内存不足了,就会回收这些只有软引用的对象(可以实现内存敏感的高速缓存)

弱引用

如果一个对象只有弱引用,也是代表可有可无。但是弱引用和软引用相比,生命周期更短,如果垃圾收集器没扫描到就活着,一旦扫描到,不管内存够不够用都会回收(垃圾收集器线程优先级很低,不一定很快能发现弱引用的对象)

虚引用

虚引用不会对对象的生命周期有任何影响,只会在对象被回收的时候收到通知

作用:
1、垃圾回收过程,在对象被收集器回收时收到一个系统通知,从而进行一些销毁前的操作,比如释放资源
2、个很重要的作用是堆外内存的释放,DirectByteBuffer就是通过虚引用来实现堆外内存的释放