ThreadLocal内存泄漏

引用 https://www.jianshu.com/p/ee8c9dccc953

一、内存回收机制

当不存在Stack(栈,也就是未结束函数)到Heap的强引用时,会被GC机制回收

二、ThreadLocal

当Stack中的ThreadLocal ref置为null时,因为TreadLocal只剩下弱引用,Heap中的ThreadLocal可以被回收;但是只要线程还存在,其ThreadLocal Map就存在相应的强引用,因此Entry中的Value不能被回收。

具体为一个线程有多个ThreadLocal-Value,其中一些ThreadLocal不使用了(相当于置为null),但是因为线程还未退出,Value仍未被清理。

因此ThreadLocal便有额外的清理机制,对key为null的Map进行判断,将其Value置为null,这样Value所引用的对象才能被释放。

相关推荐
岱宗夫up4 分钟前
【前端基础】HTML + CSS + JavaScript 基础(三)
开发语言·前端·javascript·css·html
蜜獾云6 分钟前
JAVA面试题速记-redis知识点
java·开发语言·redis
白太岁8 分钟前
操作系统开发:(11) RTOS 与 GPOS 的分界线:MMU
c语言·开发语言·汇编·arm开发·系统架构
lly2024069 分钟前
Vue3 目录结构
开发语言
m0_5312371710 分钟前
C语言-指针进阶
c语言·开发语言
Java后端的Ai之路10 分钟前
在一个 Python 脚本中导入另一个脚本的功能
服务器·开发语言·python
Drifter_yh17 分钟前
「JVM」 深入理解 StringTable:从底层编译优化到 intern 核心解密
java·jvm
W1333090890719 分钟前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
kyle~26 分钟前
Python---watchdog文件系统监控库
开发语言·python·操作系统·文件系统
JavaLearnerZGQ27 分钟前
Spring Boot 流式响应接口核心组件解析
java·spring boot·后端