【深入理解jvm读书笔记】什么是引用分级(强引用、软引用、弱引用、虚引用)

什么是引用分级(强引用、软引用、弱引用、虚引用)

引用

四种引用:强软弱虚

  • 强引用 是最传统的"引用"的定义,是指在程序代码之中普遍存在的引用赋值,即类似"Object
    obj=new Object()"这种引用关系。无论任何情况下,只要强引用关系还存在,垃圾收集器就永远不会回收掉被引用的对象。
  • 软引用 是用来描述一些还有用,但非必须的对象 。只被软引用关联着的对象,在系统将要发生内存溢出异常前,会把这些对象列进回收范围之中进行第二次回收,如果这次回收还没有足够的内存,才会抛出内存溢出异常。在JDK 1.2版之后提供了SoftReference类来实现软引用。
  • 弱引用 也是用来描述那些非必须对象 ,但是它的强度比软引用更弱一些被弱引用关联的对象只能生存到下一次垃圾收集发生为止当垃圾收集器开始工作,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。在JDK 1.2版之后提供了WeakReference类来实现弱引用。
  • 虚引用 也称为"幽灵引用"或者"幻影引用",它是最弱的一种引用关系 。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响 ,也无法通过虚引用来取得一个对象实例 。为一个对象设置虚引用关联的唯一目的只是为了能在这个对象被收集器回收时收到一个系统通知。在JDK 1.2版之后提供了PhantomReference类来实现虚引用。

设计引用分级的目的

希望能描述一类对象:当内存空间还足够时,能保留在内存之中,如果内存空间在进行垃圾收集后仍然非常紧张,那就可以抛弃这些对象

相关推荐
初岘6 分钟前
目标跟踪中的匈牙利算法
人工智能·算法·目标跟踪
脚步的影子7 分钟前
.net core8 使用JWT鉴权(附当前源码)
java·开发语言·.netcore
游向大厂的咸鱼19 分钟前
【Java EE】线程安全问题的原因与解决方案
java·安全·java-ee
抓哇能手22 分钟前
王道408考研数据结构-绪论
c语言·数据结构·考研·算法·408
Chase-Hart25 分钟前
【每日一题】LeetCode 2374.边积分最高节点(图、哈希表)
java·数据结构·算法·leetcode·散列表
油丶酸萝卜别吃28 分钟前
前后端数据加密与解密
java·javascript
coder what29 分钟前
SSM+vue音乐播放器管理系统
java·vue·ssm·音乐播放器管理系统
胡耀超32 分钟前
4.结构型设计模式 - 第1回:引言与适配器模式 (Adapter Pattern) ——设计模式入门系列
java·设计模式·适配器模式
刷帅耍帅34 分钟前
java设计模式-适配器模式
java·设计模式·适配器模式
要成为编程高手的Yu37 分钟前
蓝桥杯24省c
数据结构·c++·算法