JVM 引用的分类

引用计数算法和根搜索算法都需要通过判断引用的方式判断对象是否可回收。

JDK1.2 之前,Java 中引用的定义很传统:如果 reference 类型的数据存储的数值代表的是另一块内存的起始地址,就称这块内存代表一个引用。

在 JDK 1.2 之后,Java 将引用分成四种,按照引用强度从高到低的顺序依次是:强引用、软引用、弱引用、虚引用。

  • 强引用是指在程序代码中普遍存在的引用。垃圾回收器永远不会回收被强引用关联的对象。(类似于必不可少的生活用品
  • 软引用描述还有用但并非必需的对象。只有在系统将要发生内存溢出异常时,被软引用关联的对象才会被回收。在 JDK 1.2 之后,提供了 SoftReference 类实现软引用。(类似于可有可无的生活用品
  • 弱引用描述非必需的对象,其强度低于软引用。被弱引用关联的对象只能存活到下一次垃圾回收发生之前,当垃圾回收器工作时,被弱引用关联的对象一定会被回收。在 JDK 1.2 之后,提供了 WeakReference 类实现弱引用。(类似于可有可无的生活用品
  • 虚引用是最弱的引用关系。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用取得一个对象实例。为一个对象设置虚引用关联的唯一目的就是能在这个对象被回收时收到一个系统通知。在 JDK 1.2 之后,提供了PhantomReference类实现虚引用。

相关推荐

  1. JVM 引用分类

    2024-04-22 06:58:04       34 阅读
  2. JVM是如何解决跨代引用

    2024-04-22 06:58:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 06:58:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 06:58:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 06:58:04       87 阅读
  4. Python语言-面向对象

    2024-04-22 06:58:04       96 阅读

热门阅读

  1. vue3 依赖-组件tablepage-vue3版本1.0.2更新内容

    2024-04-22 06:58:04       35 阅读
  2. Css切换不同窗口

    2024-04-22 06:58:04       33 阅读
  3. 统一建模语言UML图

    2024-04-22 06:58:04       29 阅读
  4. NPM 详解

    2024-04-22 06:58:04       41 阅读
  5. 开发语言漫谈-SQL

    2024-04-22 06:58:04       39 阅读
  6. 在 Apache Sedona 中处理空间栅格数据

    2024-04-22 06:58:04       35 阅读
  7. Qt查询mysql表的信息解释

    2024-04-22 06:58:04       38 阅读
  8. pyflink统计单词

    2024-04-22 06:58:04       39 阅读
  9. 20240420

    2024-04-22 06:58:04       39 阅读
  10. 【无标题】

    2024-04-22 06:58:04       34 阅读
  11. 前端nodead面试题

    2024-04-22 06:58:04       32 阅读