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

相关推荐
CQU_JIAKE16 分钟前
3.21【A】
开发语言·php
今儿敲了吗26 分钟前
python基础学习笔记第九章——模块、包
开发语言·python
xyq202433 分钟前
TypeScript 命名空间
开发语言
2301_8101609535 分钟前
C++与物联网开发
开发语言·c++·算法
sxlishaobin38 分钟前
Java I/O 模型详解:BIO、NIO、AIO
java·开发语言·nio
cm65432039 分钟前
基于C++的操作系统开发
开发语言·c++·算法
ArturiaZ41 分钟前
【day57】
开发语言·c++·算法
wjs202443 分钟前
XML 技术
开发语言
彭于晏Yan44 分钟前
Spring AI(二):入门使用
java·spring boot·spring·ai
沪漂阿龙1 小时前
Python 面向对象编程完全指南:从新手到高手的进阶之路
开发语言·python·microsoft