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

强引用

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

软引用

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

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

弱引用

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

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

虚引用

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

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

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

相关推荐
墨&白.1 分钟前
如何卸载/更新Mac上的R版本
开发语言·macos·r语言
qq_12498707535 分钟前
基于springboot的幼儿园家校联动小程序的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·spring·微信小程序·小程序
技术小甜甜9 分钟前
[Python] 使用 Tesseract 实现 OCR 文字识别全流程指南
开发语言·python·ocr·实用工具
leo__52015 分钟前
MATLAB 实现 基分类器为决策树的 AdaBoost
开发语言·决策树·matlab
Alsn8617 分钟前
27.IDEA 专业版创建与打包 Java 命令行程序
java·ide·intellij-idea
老朱佩琪!20 分钟前
Unity原型模式
开发语言·经验分享·unity·设计模式·原型模式
毕设源码-郭学长20 分钟前
【开题答辩全过程】以 基于JAVA的车辆违章信息管理系统设计及实现为例,包含答辩的问题和答案
java·开发语言
while(1){yan}21 分钟前
UDP和TCP的核心
java·开发语言·网络·网络协议·tcp/ip·udp
麒qiqi24 分钟前
【Linux 进程间通信】信号通信与共享内存核心解析
java·linux·算法
后端小张26 分钟前
【Java 进阶】深入理解Redis:从基础应用到进阶实践全解析
java·开发语言·数据库·spring boot·redis·spring·缓存