强引用、软引用、弱引用、虚引用是什么

强引用~Reference

当内存不足时,JVM开始垃圾回收,对于强引用对象,就算出现了OOM也不会对该对象进行回收

强引用是我们常见的普通对象的引用,只要还有强引用指向一个对象,就能表明对象还活着

 

软引用~SoftReference

相对强引用弱化了一点,需要java.lang.ref.SoftReference类来实现

当系统内存充足时,不会回收

当系统内存不足时,会被回收

软引用通常在内存敏感的程序中,比如高速缓存就有用到

弱引用~WeakReference

java.lang.ref.WeakReference

他比软引用生存周期更短

对于只有弱引用的对象来说,只要垃圾回收机制一运行,不管JVM的内存空间是否足够,都会回收

 

 

 

虚引用PhantomReference

虚引用并不会觉得对象的生命周期,如果一个对象持有虚引用,那么它就和没有任何引用一样,在任何时候都能被回收

虚引用和引用队列ReferenceQueue联合使用,实现比finalization机制更灵活的回收操作

强引用、软引用、弱引用、虚引用是什么