- 强引用
只要对象有强引用指向,并且GC Roots可达,那么Java内存回收时,即使濒临内存耗尽,也不会回收该对象
- 软引用
主要用来缓存服务器中间计算结果及不需要实时保存的用户行为等
- 弱引用(典型应用:WeakHashMap)
如果弱引用指向的对象只存在弱引用这一条线路,则在下一次YGC时会被回收。
由于YGC时间的不确定性,弱引用何时被回收也具有不确定性。
弱引用主要用于指向某个易消失的对象,在强引用断开后,此引用不会劫持对象
- 虚引用
是极弱的一种引用关系,定义完成后,就无法通过该引用获取指向的对象。
为一个对象设置虚引用的唯一目的就是希望能在这个对象被回收时收到一个系统通知。
虚引用必须与引用队列联合使用,当垃圾回收时,如果发现存在虚引用,就会在回收对象内存前,把这个虚引用加入与之关联的可用队列中