深入理解JVM——Java的四种引用级别

前言

    首先,请深刻理解引用计数法和可达性分析算法,详情请参阅点击打开链接

    HotSpot采取了可达性分析算法用来判断对象是否被能被GC,无论是引用计算法还是可达性分析算法都是判断对象是否存在引用来判断对象是否存活。如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。为了丰富的描述对象与对象之间的关系,更为了实现系统缓存的原因,Java建立了四种引用级别。

四种引用级别

    在JDK1.2后,Java对引用的概念进行了扩充,将引用分为强引用、软引用、弱引用和虚引用4种,这4种引用强度依次减弱。

Java四种引用级别
引用类型 用途 被回收时间 生存时间
强引用 对象的一般状态 从来不会 JVM停止运行时终止
软引用 对象缓存 内存不足 内存不足时终止
弱引用 对象缓存 垃圾回收 GC运行后终止
虚引用 unknow unknow unkown


    最后,下面通过图来理解一下
JVM回收机制究竟如何区别对待各种引用类型的:


参考文献:

《深入理解Java虚拟机——JVM高级特性与最佳实践》 第二版

[转]Java 的强引用、弱引用、软引用、虚引用

猜你喜欢

转载自blog.csdn.net/qq_34218892/article/details/80570472
今日推荐