JVM 中常见的几种引用方式
1.强引用
只有所有GC Roots对象都不通过强引用 引用该对象,该对象才能被垃圾回收
2.软引用(SoftReference)
仅有软引用 引用该对象时,在垃圾回收后,内存仍不足时会再次出现垃圾回收,回收软引用对象
可以配合引用队列来释放软引用自身
3.弱引用(WeakReference)
仅有弱引用 引用该对象时,在垃圾回收时,无论内存是否充足,都会回收弱引用对象
可以配合引用队列来释放弱引用自身
4.虚引用(PhantomReference)
必须配合引用队列使用,主要配合ByteBuffer 使用,被引用对象回收时,会将虚引用入队,由Reference Handler 线程调用虚引用相关方法释放直接内存