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

相关推荐
朝如青丝暮成雪_1 分钟前
java的三大特征
java
用户0595661192092 分钟前
Java 8 + 特性与 spring Boot 及 hibernate 等最新技术实操内容全解析
java·架构·设计
xiaocainiao8814 分钟前
Python 实战:构建可扩展的命令行插件引擎
开发语言·python
长安有故里y18 分钟前
tomcat设置预防host头攻击
java·tomcat·firefox
生产队队长19 分钟前
Tomcat问题:启动脚本startup.bat中文乱码问题解决
java·ajax·tomcat
碧海蓝天202227 分钟前
C++法则21:避免将#include放在命名空间内部。
开发语言·c++
张紫娃31 分钟前
idea 常用快捷键
java·ide·intellij-idea
兮动人35 分钟前
Java应用全链路故障排查实战指南:从系统资源到JVM深度诊断
java·开发语言·jvm
风流 少年43 分钟前
Cursor创建Spring Boot项目
java·spring boot·后端
R-sz1 小时前
导出word并且插入图片
开发语言·c#·word