【无标题】

引用类型简介

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

强引用

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

软引用

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

弱引用

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

虚引用

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

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

相关推荐
行思理1 分钟前
Nginx 跨站请求(CORS)配置完全指南:从原理到生产实践
java·前端·nginx
小溪学编程9 分钟前
Spring @Bean 与 @Component 注解的区别详解
java·后端·spring
Wang's Blog35 分钟前
Java 项目实战: 交友项目 - 圈子互动章总结与自检清单
java·bootstrap·交友
云和数据.ChenGuang1 小时前
Python 常见特殊方法详解:__new__、__init__、__del__、__str__、__repr__ 与 __getattribute__
开发语言·人工智能·python·1024程序员节
xyouyuweizhu1 小时前
字节流与字符流:Java IO 的两条主线该怎么选
java·开发语言·python
代码方舟1 小时前
零信任架构实战:基于天远人企关联构建自动化供应链核心企业关联穿透与利益冲突审查网关
java·人工智能·架构·自动化
多弗朗皮卡丘2 小时前
C++的IO流
开发语言·c++·io流·文件io流
liyi_hz20082 小时前
O2OA(翱途) V10.1 即将发布|功能再升级,安全再加固,协同更高效!
java·javascript·windows·开源软件
骑着蜗牛撵大象3272 小时前
AI Agent 工程化开发实战(三):用 StateGraph 给智能体搭一条可回放的状态流水线
java·开发语言·jvm·ai·状态管理·langgraph·stategraph
itmigrate2 小时前
Rust 里的所有权误区:不是不写 clone 就叫高性能
开发语言·后端·rust