面试八股之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!!!
📚愿大家都能学有所得,功不唐捐!
相关文章:
面试八股之JVM篇3.6——垃圾回收——强引用、弱引用、虚引用、软引用
🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…...
博客摘录「 Sql Server 收缩日志文件原理及always on 下的实践」2024年5月22日
四、Always on 环境下实践 先对数据库进行完整备份: EXEC sp_configure show advanced options, 1; RECONFIGURE; EXEC sp_configure xp_cmdshell, 1; RECONFIGURE; DECLARE DbName NVARCHAR(1000); DECLARE myCursor CURSOR LOCAL STATIC FOR S…...
每日一题(5)——StringBuffer操作
编写程序,对StringBuffer对象进行追加,插入和修改缓冲区长度等操作; class StringDemo{public static void main(String[] args){boolean btrue;int i321;long l123456;String s1new String("Hello,world!");StringBuffer s2new S…...
默认路由实现两个网段互通实验
默认路由实现两个网段互通实验 **默认路由:**是一种特殊的静态路由,当路由表中与数据包目的地址没有匹配的表项时,数据包将根据默认路由条目进行转发。默认路由在某些时候是非常有效的,例如在末梢网络中,默认路由可以…...
ComfyUI完全入门:图生图局部重绘
大家好,我是每天分享AI应用的萤火君! 这篇文章的主题和美女有关,不过并不是教大家生产美女视频,而是讲解 ComfyUI 的图生图局部重绘,其中将会以美女图片为例,来展示局部重绘的强大威力。 先看看效果&…...
基于UDP的网络多人聊天室
UDP服务器 #include <myheader.h>//宏定义打印错误信息 #define PRINT_ERR(msg) \do \{ \printf("%S,%D,%S\n",__FI…...
美国FDA认证是什么,食品FDA注册申请流程
美国FDA认证是什么? 美国FDA认证,全称为美国食品药品监督管理局(Food and Drug Administration)的认证,是美国政府为了确保食品、药品、医疗器械等产品的安全性和有效性所设立的重要制度。FDA认证的种类繁多&#x…...
golang的context和chan 的使用
1. context 作用 context包的context的接口,主要是控制协程执行上下文的时间,以及取消程序的执行,以及上下文中传递数据等作用,golang中耗时或者需要协同的操作都会见到context的身影。 context有几个常用的方法 1.1 context.B…...
洛谷P3574 [POI2014] FAR-FarmCraft(树形dp)
洛谷 P 3574 [ P O I 2014 ] F A R − F a r m C r a f t (树形 d p ) \Huge{洛谷P3574 [POI2014] FAR-FarmCraft(树形dp)} 洛谷P3574[POI2014]FAR−FarmCraft(树形dp) 文章目录 题意题目说明 思路标程 题目…...
vue/core源码中ref源码的js化
起源: 当看见reactivity文件中的ref.ts文件长达五百多的ts代码后,突发奇想想看下转化成js有多少行。 进行转化: let shouldTrack true; // Define shouldTrack variable let activeEffect null; // Define activeEffect variable// 定义…...
准备打ccf
准备打ccf...
k8s遇到的错误记录
时隔四年有开始重新鼓捣k8s了,重新安装后遇到的错误记录如下: Error: Package: kubelet-1.14.0-0.x86_64 (kubernetes) Requires: kubernetes-cni 0.7.5 Available: kubernetes-cni-0.3.0.1-0.07a8a2.x86_64 (kubernetes) …...
全局平均池化笔记
全局平均池化(Global Average Pooling, GAP)是一种用于卷积神经网络(CNN)中的池化操作,其主要作用和优点包括: 减少参数数量:全局平均池化层将每个特征图通过取其所有元素的平均值,压…...
【数仓系列】maxcompute、postgresql、sparksql等行转列数据处理实战总结(其他类型持续总结更新)
1.熟悉、梳理、总结项目研发实战中的SQL开发日常使用中的问题、经验总结,都是常用的开发技能,可以省去很多时间,时间长就忘记了 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 文章目录 1.maxcompu…...
用数据,简单点!奇点云2024 StartDT Day数智科技大会,直播见
在充满挑战的2024,企业如何以最小化的资源投入和试错成本,挖掘新的增长机会,实现确定性发展? “简单点”是当前商业环境的应对策略,也是奇点云2024 StartDT Day的核心理念。 5月28日,由奇点云主办的2024 S…...
Cloneable接口和深拷贝
在java中如何对对象进行拷贝呢?我们可以使用Object类中的clone方法。 一、浅拷贝 在使用clone方法对对象进行拷贝的时候,需要注意: 1.需要重写clone方法; 2.clone方法的返回值是Object类,需要强制类型转化…...
C++:vector的介绍及使用
✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 文章目录 文章目录 前言 一、vector的介绍 二、vector的使用 2.1.构造和赋值重载(Member functions) 2.2 vector iterator 的使用 2.3 vector 空间增长问题 2.4 vector 增删查改 三 sort 四 v…...
【机器学习】大模型在机器学习中的应用:从深度学习到生成式人工智能的演进
🔒文章目录: 💥1.引言 ☔2.大模型概述 🚲3.大模型在深度学习中的应用 🛴4.大模型在生成式人工智能中的应用 👊5.大模型的挑战与未来展望 💥1.引言 随着数据量的爆炸性增长和计算能力的提…...
营销短信XML接口对接发送示例
在现代社会中,通信技术日新月异,其中,短信作为一种快速、简便的通信方式,仍然在日常生活中占据着重要的地位。为了满足各种应用场景的需求,短信接口应运而生,成为了实现高能有效通信的关键。 短信接口是一种…...
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:C语言刷题系列 目录 一、问题描述 二、解题思路 解题思路: 解题步骤: 三、C语言代码实现及测试 一、问题描述 给定一…...
7脚 LED数码屏的刷新显示,乱码请指正
我是新手近段时间的工作是点亮7脚LED数码屏,刷新时遇到了困惑请大家帮助指正,在此表示非常感谢。 下面是7脚LED数码屏结构图。 用了7个 case下面是刷新代码switch(ScanPinNum){// ---------------- CASE1: PIN1------------------------case 1: …...
HagiCode Soul 平台技术解析:从需求萌发到独立平台的演进之路烤
1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。 3 O…...
Spring事务@Transactional失效的7大隐蔽陷阱与实战避坑指南
1. 代理机制失效的隐蔽陷阱 Spring事务管理的核心原理是通过动态代理实现的,但很多开发者并不清楚代理机制在哪些情况下会失效。最常见的问题就是同一个类中的方法内部调用。比如你在Service类中写了一个无事务的方法A,A内部调用了有Transactional注解的…...
RAGAS 了解吗?它的评估指标有哪些?评估流程是怎样的?评估数据如何获取和构造?
1. 题目分析做过 RAG 项目的人大概都有过这种体验:系统搭完了,效果怎么样?说好也行,说不好也行,全凭主观感觉。你觉得检索结果挺相关的,老板觉得回答不够精准;你觉得答案已经很准了,…...
杰理之蓝牙歌词信息获取回调【篇】
const u8 more_avctp_cmd_support 1;置上1 需要在void bredr_handle_register()注册回调函数 要动态获取播放时间的,可以发送USER_CTRL_AVCTP_OPID_GET_PLAY_TIME命令就可以了 要半秒或者1秒获取就做个定时发这个命令...
播客内容结构化:SenseVoice-Small ONNX模型章节自动划分演示
播客内容结构化:SenseVoice-Small ONNX模型章节自动划分演示 1. 快速了解SenseVoice-Small语音识别模型 SenseVoice-Small是一个专门处理语音识别任务的先进模型,它不仅能准确识别语音内容,还能分析情感和检测音频中的各种事件。这个模型经…...
如何打造终极纯净阅读体验:ReadCat免费开源小说阅读器完整指南
如何打造终极纯净阅读体验:ReadCat免费开源小说阅读器完整指南 【免费下载链接】read-cat 一款免费、开源、简洁、纯净、无广告的小说阅读器 项目地址: https://gitcode.com/gh_mirrors/re/read-cat 在数字阅读应用泛滥的今天,ReadCat免费开源小说…...
CustomTkinter:重塑Python桌面应用体验的现代化UI解决方案
CustomTkinter:重塑Python桌面应用体验的现代化UI解决方案 【免费下载链接】CustomTkinter A modern and customizable python UI-library based on Tkinter 项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter 传统Tkinter界面陈旧、定制化程度低&…...
从对话到执行:OpenTiny NEXT 如何重塑前端智能化开发范式
文章目录 每日一句正能量引言:前端开发的"智能体"时刻一、MCP与WebMCP:让大模型"看懂"前端工程1.1 什么是MCP?为什么前端需要它?1.2 WebMCP:浏览器端的上下文协议1.3 实战:用WebMCP实现…...
Simulink仿真避坑指南:如何设置步长、powergui和模块采样时间才能让控制周期更稳定
Simulink控制系统仿真参数配置实战:从步长到采样时间的精准调优 在电机控制、电力电子系统等工业仿真场景中,Simulink参数的合理配置直接决定了仿真结果的可靠性与工程指导价值。许多工程师第一次搭建控制系统模型时,往往被各种时间参数搞得晕…...
