强软弱虚引用 看这个你就懂啦!

本文深入探讨Java中的四种引用类型:强引用、软引用、弱引用和虚引用。强引用在任何情况下都不会被垃圾回收,导致OOM异常。软引用在内存充足时保留,内存不足时回收。弱引用不论内存状况如何,总会在GC时被回收。虚引用则需配合引用队列,仅用于接收对象回收前的通知。理解这些引用类型对于优化内存管理和防止内存泄漏至关重要。
摘要由CSDN通过智能技术生成

依赖关系

在这里插入图片描述

强引用

在这里插入图片描述
看案例
在这里插入图片描述
引用为空 强制回收 不起作用

软引用

在这里插入图片描述
在这里插入图片描述
没有回收 内存充足 我们只能强制gc 情理之中的事情

但如果内存不足呢?

虚拟机限定5m大小运行

 -Xms5m -Xmx5m -XX:+PrintGCDetails

2020版如果找不到的话
在这里插入图片描述
测试
在这里插入图片描述

完美 在内存不足时被回收了

弱引用

在这里插入图片描述
在这里插入图片描述

软弱引用的案例

在这里插入图片描述

WeakHashMap的使用

在这里插入图片描述
在这里插入图片描述
看jdk文档的说明
在这里插入图片描述当他的键不再被使用时 将会自动移除整个entry对象

说虚引用前要先说下引用队列 因为虚引用必须搭配引用队列

引用队列

在对象回收前先保存在引用队列中  说人话  一个存放对象的活人棺材

使用弱引用来举例
在这里插入图片描述
可以看到 第一次队列没有元素 但gc后队列有了一个引用对象

虚引用

与上面用法类似 只是做一个系统通知的作用
在这里插入图片描述

总结

再触发垃圾回收机制的前提下

强引用 死都不回收 oom异常 宇宙毁灭也不回收
软引用 有内存就留着 没内存就回收 -----我有钱就收留你 没钱就滚蛋
弱引用 不管如何都会被回收
虚引用 同上 但必须配合引用队列 只要起一个死亡前通知的作用
引用队列 活人棺材

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值