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

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

引用

四种引用:强软弱虚

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

设计引用分级的目的

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

相关推荐
晒太羊的猫16 分钟前
hot100动态规划刷题
算法·动态规划
\光辉岁月/25 分钟前
7.javase-面向对象
java·开发语言
weixin_5310946940 分钟前
heap_4内存管理
java·开发语言·算法
余额瞒着我当琳43 分钟前
红黑树的实现--红黑树的概念、规则、效率、结构、旋转、查找、验证
数据结构·c++·算法
程序员南飞1 小时前
win系统安装minio
java·数据结构·算法
青少儿编程课堂1 小时前
AC自动机多模式串匹配精讲:校园关键词巡检实战解析
c++·python·算法·bfs·信息学竞赛
Escalating_xu1 小时前
【Python】使用库:标准库、第三方库、pip、项目实战与程序打包
java·python·pip
longlongzihan2 小时前
LeetCode 5. 最长回文子串:从暴力匹配到中心扩展的思维演进
c++·算法·leetcode
waoooqwe2 小时前
问卷样本真实吗
大数据·数据库·算法·数据分析
Wang's Blog2 小时前
Java框架 SpringCloud 快速入门: 过滤器链执行顺序
java·spring cloud