强引用:平时我们所使用的大部分引用都是强引用。一个对象具有强引用,类似于不可缺少的生活品。JVM在内 存不足的时候,宁可抛出outofmemory异常,使程序终止,也不愿意回收该对象。
软引用:只具有软引用的对象,就像生活中可有可无的生活品。如果JVM内存充足,垃圾回收器就不会回收它。如果JVM内存不足的话,垃圾回收器就会对它进行回收。
弱引用:只具有弱引用的对象,就像生活中可有可无的生活品。但是它比软引用具备更短的生命周期,垃圾回收器扫描它所管辖的区域,如果扫描到弱引用对象,就直接对它进行回收。
虚引用:形同虚设。虚引用就和没有任何引用一样。在任何时候都能够被回收。
虚引用与软引用和弱引用的区别:
虚引用要和引用队列联合使用。垃圾回收器在回收一个对象之前,如果还发现了该对象的虚引用,就会再对象回收之前,将虚引用添加到引用队列中。
使用软引用能带来的好处:提升JVM回收垃圾的速度,维护系统的运行安全,防止内存溢出等问题。