引用【强、软、弱、虚】
强引用
只有所有GC Roots对象都不通过【强引用】引用该对象,该对象才能被垃圾回收
软引用
仅有软引用引用对象,在垃圾回收后,内存仍不足时会触发垃圾回收
弱引用
弱引用:仅有弱引用引用该对象时,在垃圾回收时,无论内存是否充足,都会回收弱引用
虚引用
必须配合引用队列使用,被引用对象回收时,会将虚引用入队,由Reference Handler 线程调用虚引用相关方法释放直接内存
引用【强、软、弱、虚】的区别
- 强引用:只要所有GC Roots 能找到,就不会被回收
- 软引用:需要配合SoftReference使用,当垃圾多次回收,内存依然不够的时候会回收软引用对象
- 弱引用:需要配合WeakReference使用,只要进行了垃圾回收,就会把弱引用对象回收
- 虚引用:必须配合引用队列使用,被引用对象回收时,会将虚引用入队,由Reference Handler线程调用虚引用相关方法释放直接内存