笔记之——Java 中的强、软、弱、虚 - 4种引用类型

2020-07-04  本文已影响0人  xulee

1. 强 - StrongReference


2. 软 - SoftReference


Apple apple = new Apple()
SoftReference softReference = new SoftReference<>(apple ) // softReference本身是强引用,只是 apple 附加上了软引用
apple = null // 去强引用,softReference 就持有了apple 的软引用,要获取apple 对象,只能通过softReference.get()获取

3. 弱 - WeakReference


4. 虚 - PhantomReference


Apple apple = new Apple()
ReferenceQueue queue = new ReferenceQueue()
SoftReference softReference = new SoftReference(apple, queue)
apple = null 

注:不同于1,2,3种引用,此处引用和没有引用并不会影响apple的回收情况,即引用与否没有任何区别,在 apple = null (只有虚引用的情况下)时,apple随时可能被回收,但被回收之前softReference会被添加到queue中,从而可以通过判断 queue 是否为空来判断apple 是否已经被回收

注意:


以上都有写:apple = null,是为只保留一种引用方式,如果apple 未设置为null,则apple 一直为强引用类型

Object obj = weakReference.get() // obj 是强引用 
上一篇下一篇

猜你喜欢

热点阅读