一、强引用
当我们使用new 这个关键字创建对象时被创建的对象就是强引用,垃圾回收器就不会去回收有强引用的对象,而当内存不足时,jvm不会回收强引用的对象,会报内存空间不足的异常。
二、软引用
当内存足够时,垃圾回收器不会回收它,但如果内存不足了,就会回收软引用对象。
三、弱引用
只要垃圾回收器检测到这样的引用,就会立即回收掉该引用对象,不管内存是否足够。
四、虚引用
如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。 虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列 (ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之 关联的引用队列中。