强引用、软引用、弱引用、虚引用详解

强引用

默认创建的对象都属于强引用,强引用对象只有在不被任何对象引用时才会被垃圾回收器回收。哪怕虚拟机抛出OutOfMemeoryError错误,也不会回收被引用的强引用对象。

软引用

软引用是一种相对较弱的引用类型,使用SolfReference来创建对象,当内存不足时,垃圾回收器会优先回收软引用对象,以释放内存。

软引用可以作为缓存机制来使用

弱引用

弱引用是一种更弱的引用类型,使用WeakReference来创建弱引用对象。

弱引用对象无法存活到下次垃圾回收后,在垃圾回收时,即使内存充足,弱引用对象也会被清理。

虚引用

虚引用是最弱的引用类型,使用PhantomReference来创建虚引用对象。无法通过虚引用来获取对象的实例

必须与引用队列联合使用‌。

‌用途‌:主要用于在对象被回收时获取通知,例如实现内存敏感缓存的清理机制。 ‌

相关推荐
云原生指北4 分钟前
命令行四件套:fd-rg-fzf-bat
java·大数据·elasticsearch
南境十里·墨染春水22 分钟前
C++ 笔记 友元(面向对象)
开发语言·c++·笔记
TT_441925 分钟前
python程序实现图片截图溯源功能
开发语言·python
笨笨饿39 分钟前
20_Git 仓库使用手册 - 初学者指南
c语言·开发语言·嵌入式硬件·mcu·学习
人间打气筒(Ada)43 分钟前
go实战案例:如何通过 Service Meh 实现熔断和限流
java·开发语言·golang·web·istio·service mesh·熔断限流
桦02 小时前
[C++复习]:STL
开发语言·c++
主宰者2 小时前
C# CommunityToolkit.Mvvm全局事件
java·前端·c#
计算机学姐2 小时前
基于SpringBoot的咖啡店管理系统【个性化推荐+数据可视化统计+配送信息】
java·vue.js·spring boot·后端·mysql·信息可视化·tomcat
前端小咸鱼一条2 小时前
16.迭代器 和 生成器
开发语言·前端·javascript
My的梦想已实现2 小时前
关于JAVA Springboot集成支付后打包JAR之后报安全错误的处理
java·spring boot·jar