【无标题】

引用类型简介

引用类型分为强软弱虚四种类型,越往后约束越松。

强引用

强引用就是默认的引用类型,我们通常写的new Object就是强引用,只要不把栈中引用删除,堆中对应内存就不会被GC掉。

软引用

软引用一般指向图片缓存这类在内存充足时不被GC,但是内存不足时将图片缓存这类软引用清理掉,如果清理了图片缓存之后内存还是不足,就爆发OOM。

弱引用

弱引用是只要GC就会回收的对象,比如ThreadLocal这种,为了避免线程池核心线程一直存活导致ThreadLocal也一直存活进而内存泄漏,于是将ThreadLocal设置为弱引用,这样每次GC都会将ThreadLocal清理,除此之外,ThreadLocal是ThreadLocalMap的key,Map还有value存储值,这个value是强引用,那么当用完后记得手动remove清理。

虚引用

虚引用也是只要GC就会回收,但是它是与引用队列配合使用的,当某个虚引用对象被GC时,会通知引用队列,就是一个通知,这样引用队列就知道这个虚引用对象内存被回收了,比较适合堆外内存的释放,比如某块内存加上虚引用关联某堆外内存,当这块虚引用对象内存被回收时,通知引用队列释放堆外内存。

除了强引用是默认的,其它都需要显示的继承XXXReference。

相关推荐
weixin_459753941 小时前
golang如何实现Trace上下文传播_golang Trace上下文传播实现思路
jvm·数据库·python
zhangfeng11331 小时前
openclaw skills 小龙虾技能 通讯仿真 matlab skill Simulink Agentic Toolkit,通过kimi找到,mcp通讯
开发语言·matlab·openclaw·通讯仿真
weixin_444012931 小时前
PHP 中逻辑或(--)运算符的正确使用与条件逻辑重构指南
jvm·数据库·python
iAm_Ike7 小时前
Go 中自定义类型与基础类型间的显式类型转换详解
jvm·数据库·python
iuvtsrt7 小时前
Golang怎么实现方法集与接口的匹配_Golang如何理解值类型和指针类型实现接口的区别【详解】
jvm·数据库·python
Javatutouhouduan7 小时前
2026Java面试的正确打开方式!
java·高并发·java面试·java面试题·后端开发·java编程·java八股文
chao1898448 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
JAVA面经实录9178 小时前
Java初级最终完整版学习路线图
java·spring·eclipse·maven
赏金术士8 小时前
Kotlin 习题集 · 高级篇
android·开发语言·kotlin
Cat_Rocky9 小时前
k8s-持久化存储,粗浅学习
java·学习·kubernetes