新闻中心

J*a里的强引用弱引用有什么区别_J*a四种引用类型机制说明

2025-12-13
浏览次数:
返回列表
强引用阻止GC回收,弱引用在GC时立即回收,软引用在内存不足时回收,虚引用不阻止回收仅用于跟踪回收时机。

java里的强引用弱引用有什么区别_java四种引用类型机制说明

强引用和弱引用的核心区别在于:GC是否“尊重”它们的存在。强引用像一道铁闸,只要它在,对象就绝不会被回收;弱引用则像一张薄纸,GC扫到就收,不管内存够不够。

强引用:默认、强硬、不妥协

Object obj = new Object(); 就是典型的强引用。它的特点是:

  • 只要至少一个强引用指向对象,GC就完全无视内存压力,死守不放
  • 哪怕堆内存快爆了,JVM宁可抛 OutOfMemoryError,也不会动它
  • 只有显式设为 null,或变量超出作用域,对象才变成“可回收候选”
  • 日常开发中95%以上的对象引用都是强引用

弱引用:GC一见就收,不讲条件

WeakReference weakRef = new WeakReference(new Object()); 它的关键行为是:

  • 下一次GC运行时,无论内存是否充足,只要对象只被弱引用持有,就会被立即回收
  • get() 方法随时可能返回 null,使用前必须判空
  • 常用于规范化映射(如 WeakHashMap),避免因缓存导致内存泄漏
  • 适合存放临时、可再生、生命周期短的数据,比如线程上下文快照

软引用:内存告急时的缓冲带

SoftReference softRef = new SoftReference(new Object()); 它介于强与弱之间:

拾贝 拾贝

一键同步微信读书所有笔记和划线,并在新标签页回顾

拾贝 186 查看详情 拾贝
  • 内存充足时,它表现得像强引用,稳稳留住对象
  • JVM判断“即将OOM”前,会批量清理软引用对象,属于“被动让步”
  • 典型用途是内存敏感型缓存,如图片、模板、解析结果等
  • 回收时机由JVM实现决定(如HotSpot基于最近使用时间和堆剩余空间估算)

虚引用:不挡GC,只发通知

PhantomReference phantRef = new PhantomReference(obj, queue); 它最特殊:

  • 无法通过 get() 获取对象(始终返回 null),对对象生命周期零影响
  • 必须配合 ReferenceQueue 使用,对象被回收前,虚引用会被入队
  • 主要用于跟踪对象回收时机,做资源清理(如直接内存释放、文件句柄关闭)
  • 是四种引用中唯一不能单独“保活”对象的类型

本质上,四种引用是J*a给GC传递的不同“优先级指令”:强引用说“别动”,软引用说“缺内存再动”,弱引用说“下次就动”,虚引用说“动之前喊我一声”。用对场景,才能既保性能又防泄漏。

基本上就这些。

以上就是J*a里的强引用弱引用有什么区别_J*a四种引用类型机制说明的详细内容,更多请关注其它相关文章!


# 就会  # 档案网站建设论文  # 百度营销推广计划正在学习  # 绵阳抖音seo优化源码  # 威海抖音seo系统  # seo的作用和功效  # 江苏网站建设工作流程  # 天津综合网站建设差异  # 开发区关键词排名自学  # seo中文面试  # 济宁网络seo模式  # 一声  # java  # 有什么  # 都是  # 就收  # 表现形式  # 有什么区别  # 如何使用  # 拾贝  # 四种  # 作用域  # 区别 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension  12306选座怎么选到商务座_12306商务座选择与配置说明  windows10怎么查看硬盘序列号_windows10硬盘id查询命令  Discord Slash 命令响应超时问题的异步解决方案  Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐  J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析  印象笔记如何设离线包出差查阅_印象笔记设离线包出差查阅【离线阅读】  Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突  Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】  厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新  火锅吃太多会怎样 火锅吃太多会上火吗  c++ 获取系统当前时间 c++时间戳获取方法  Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议  J*aScript中向JSON对象添加新属性的正确姿势  邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧  漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  Typer应用中灵活处理命令行参数的令牌化与解析  Composer如何解决json扩展缺失的错误  荣耀Play7T运行卡顿解决_荣耀Play7T性能优化  神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  小红书网页版入口链接分享 小红书官网直接进  腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录  QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道  如何在Promise链中有效终止错误处理后的执行  Python模块化编程:有效管理依赖与避免循环引用  CSS实现侧边栏导航项全宽圆角悬停背景效果  b站怎么取消点赞_b站点赞取消操作方法  AngularJS $http POST请求数据传递与Go后端接收实践  mcjs网页版流畅运行 mcjs低配电脑畅玩入口  解决 MongoDB 聚合查询中对象数组 _id 匹配问题  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享  在React函数组件中利用原生HTML5进行邮箱地址验证  TikTok评论显示延迟如何处理 TikTok评论刷新优化方法  Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】  消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技  Win11怎么开启高性能模式_Windows 11电源计划优化设置  PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比  2026年发布! 美少女养成动作RPG《神剑少女战记》发布实机演示  QQ邮箱官方邮箱登录入口 QQ邮箱网页版快速访问  漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口  126邮箱账号注册 电脑版登录入口  学习通网页版快速入口 学习通官网网页版直接打开  AO3中文官网链接_AO3网页版稳定镜像站  极速漫画官方主页网址 极速漫画漫画在线浏览官网链接  邮政快递单号查询入口 邮政快递物流信息在线查询入口  深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  126邮箱手机版登录官网2026_126手机邮箱免费入口最新 

搜索