天天看点

[Java] 的四种引用,强弱软虚,用到的场景

版权声明:请尊重个人劳动成果,转载注明出处,谢谢!

从jdk1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。

1 . 强引用(strongreference)

2 . 弱引用(weakreference)

3 . 软引用(softreference)

4 . 虚引用(phantomreference)

“虚引用”顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。 

虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用 必须 和引用队列 (referencequeue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之 关联的引用队列中。

如下代码创建虚引用:

弱引用、软引用可以和一个引用队列(referencequeue)联合使用,如果其所引用的对象被垃圾回收,java虚拟机就会把这个弱引用加入到与之关联的引用队列中。

在创建任何弱引用、软引用和虚引用的过程中你可以通过如下代码提供引用队列referencequeue。