wordpress优化宝塔,seo结算系统,贵阳网站建设平台,网站建设响应1. 强引用 只有所有 GC Roots 对象都不通过【强引用】引用该对象#xff0c;该对象才能被垃圾回收 由GC Root直接new出来的对象是强引用#xff0c;只有当GC Root不再引用该对象的时候#xff0c;才会被回收
例子#xff1a; ListString list new ArrayList该对象才能被垃圾回收 由GC Root直接new出来的对象是强引用只有当GC Root不再引用该对象的时候才会被回收
例子 ListString list new ArrayList();listnull;//不再引用ArrayList下一次垃圾回收触发就会回收掉ArrayList
2. 软引用SoftReference 仅有软引用引用该对象时在垃圾回收后内存仍不足时会再次出发垃圾回收回收软引用对象 可以配合引用队列来释放软引用自身
软引用可以理解为没有被GC Root直接引用而是通过强引用的对象间接引用
如果a,b两个GC Root针对对象ca 对c为软引用b对c为强引用这个时候发生垃圾回收并且在内存不足时是不会回收掉c的只有当b对c的引用失效时才会进行清除
3. 弱引用WeakReference 仅有弱引用引用该对象时在垃圾回收时无论内存是否充足都会回收弱引用对象 可以配合引用队列来释放弱引用自身
软引用和弱引用本身都是对象会占用内存空间可以配合引用队列将软引用和弱引用的对象清理后放入引用队列之后就可以遍历清除释放内存 4. 虚引用PhantomReference 必须配合引用队列使用主要配合 ByteBuffer 使用被引用对象回收时会将虚引用入队 由 Reference Handler 线程调用虚引用相关方法释放直接内存 5. 终结器引用FinalReference 无需手动编码但其内部配合引用队列使用在垃圾回收时终结器引用入队被引用对象 暂时没有被回收再由 Finalizer 线程通过终结器引用找到被引用对象并调用它的 finalize方法第二次 GC 时才能回收被引用对象