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所引用的对象才能被释放。

相关推荐
kylezhao2019几秒前
C#中的反射是什么?详细讲解以及在工控上位机中如何应用
java·开发语言
张三_02262 分钟前
Java并发:我用修仙小说讲AQS
java
what丶k3 分钟前
【微服务】Spring AI 使用详解:让微服务无缝集成 AI 能力
java·后端·ai编程
骑猪上高速z8 分钟前
Easy Desensitize:Java 高性能脱敏引擎的试用与实测
java
工业甲酰苯胺9 分钟前
一文学习 Spring AOP 源码全过程
java·学习·spring
知我Deja_Vu10 分钟前
详解 Lists.newArrayList() 的作用
java·开发语言
nxb55610 分钟前
云原生 tomcat实验设定
java·tomcat
NGC_661112 分钟前
归并排序算法
java·数据结构·算法
Andy Dennis17 分钟前
Java语法注意事项
java·开发语言·jvm
金刚狼8823 分钟前
qt和qt creator的下载安装
开发语言·qt