当前位置: 首页 > news >正文

面试八股之JVM篇3.6——垃圾回收——强引用、弱引用、虚引用、软引用

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。

✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。
🏃人生之义,在于追求,不在成败,勤通大道。加油呀!

🔥个人主页:Ethan Yankang
🔥专栏:面试八股文||Java项目

🔥本篇概览:Java中的强、弱、虚、软引用详解


目录

3.7 强引用、软引用、弱引用、虚引用的区别?

3.7.1 强引用

3.7.2 软引用

3.7.3 弱引用

3.7.4 虚引用


3.7 强引用、软引用、弱引用、虚引用的区别?

难易程度:☆☆☆☆

出现频率:☆☆☆

3.7.1 强引用

强引用:只有所有 GC Roots 对象都不通过【强引用】引用该对象,该对象才能被垃圾回收

User user = new User();

3.7.2 软引用

软引用:仅有软引用引用该对象时,在垃圾回收后,内存仍不足时会再次出发垃圾回收

User user = new User();
SoftReference softReference = new SoftReference(user);

3.7.3 弱引用

弱引用:仅有弱引用引用该对象时,在垃圾回收时,无论内存是否充足,都会回收弱引用对象

User user = new User();
WeakReference weakReference = new WeakReference(user);

延伸话题:ThreadLocal内存泄漏问题

ThreadLocal用的就是弱引用,看以下源码:

static class Entry extends WeakReference<ThreadLocal<?>> {Object value;
​Entry(ThreadLocal<?> k, Object v) {super(k);value = v; //强引用,不会被回收}
}

Entry的key是当前ThreadLocal,value值是我们要设置的数据。

WeakReference表示的是弱引用,当JVM进行GC时,一旦发现了只具有弱引用的对象,不管当前内存空间是否足够,都会回收它的内存。但是value是强引用,它不会被回收掉。

ThreadLocal使用建议:使用完毕后注意调用清理方法。

3.7.4 虚引用

虚引用:必须配合引用队列使用,被引用对象回收时,会将虚引用入队,由 Reference Handler 线程调用虚引用相关方法释放直接内存

 



💖💖💖💖💖​​​​​​​💖​​​​​​​💖​​​​​​​💖​​​​​​​💖​​​​​​​💖💖💖💖💖​​​​​​​💖​​​​​​​💖​​​​​​​💖​​​​​​​💖​​​​​​

热门专栏推荐

​​​​​​​

🌈🌈计算机科学入门系列                     关注走一波💕💕

🌈🌈CSAPP深入理解计算机原理        关注走一波💕💕

🌈🌈微服务项目之黑马头条                 关注走一波💕💕

🌈🌈redis深度项目之黑马点评            关注走一波💕💕

🌈🌈Java面试八股文系列专栏            关注走一波💕💕

🌈🌈算法leetcode+剑指offer               关注走一波💕💕


📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤ 分享👥 留言💬thanks!!!
📚愿大家都能学有所得,功不唐捐!

http://www.lryc.cn/news/353135.html

相关文章:

  • 博客摘录「 Sql Server 收缩日志文件原理及always on 下的实践」2024年5月22日
  • 每日一题(5)——StringBuffer操作
  • 默认路由实现两个网段互通实验
  • ComfyUI完全入门:图生图局部重绘
  • 基于UDP的网络多人聊天室
  • 美国FDA认证是什么,食品FDA注册申请流程
  • golang的context和chan 的使用
  • 洛谷P3574 [POI2014] FAR-FarmCraft(树形dp)
  • vue/core源码中ref源码的js化
  • 准备打ccf
  • k8s遇到的错误记录
  • 全局平均池化笔记
  • 【数仓系列】maxcompute、postgresql、sparksql等行转列数据处理实战总结(其他类型持续总结更新)
  • 用数据,简单点!奇点云2024 StartDT Day数智科技大会,直播见
  • Cloneable接口和深拷贝
  • C++:vector的介绍及使用
  • 【机器学习】大模型在机器学习中的应用:从深度学习到生成式人工智能的演进
  • 营销短信XML接口对接发送示例
  • 【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
  • Python pdf2imges -- pdf文件转图片
  • 分布式版本控制工具 git
  • Flutter 中的 ExpansionTile 小部件:全面指南
  • 二进制的协议的测试程序
  • 多线程事务
  • 春秋云境CVE-2020-26048
  • MySQL 带游标的存储过程(实验报告)
  • 结构体(位段)内存分配
  • 基于SSH的母婴用品销售管理系统带万字文档
  • 说些什么好呢
  • 1301-习题1-1高等数学