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

相关推荐
while(1){yan}3 分钟前
文件IO的常识
java·开发语言·青少年编程·电脑常识
Light605 分钟前
再见,REST API?你好,MCP Server!AI时代后端开发新范式
java·人工智能·rest api·ai agent·spring ai·mcp
逸风尊者11 分钟前
开发需掌握的知识:MQTT协议
java·后端
进击的荆棘22 分钟前
C++起始之路——类和对象(下)
开发语言·c++
帅得不敢出门27 分钟前
精简Android SDK(AOSP)的git项目提高git指令速度
android·java·开发语言·git·elasticsearch
liu****28 分钟前
10.排序
c语言·开发语言·数据结构·c++·算法·排序算法
爱写Bug的小孙29 分钟前
Tools、MCP 和 Function Calling
开发语言·人工智能·python·ai·ai编程·工具调用
青蛙大侠公主29 分钟前
Spring事务
java·数据库·spring
小小Fred30 分钟前
FreeRTOS函数prvInitialiseNewTask解析
java·开发语言
图表制作解说(目标1000个图表)32 分钟前
Java通过BACnet协议读取和写入设备信息
java·楼宇自控·bacnet协议