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

相关推荐
好家伙VCC7 小时前
**发散创新:用 Rust实现游戏日引擎核心模块——从事件驱动到多线程调度的实战
java·开发语言·python·游戏·rust
014-code7 小时前
Chronicle Queue:把 Disruptor 的数据落盘
java·服务器
Dxy12393102167 小时前
Python在图片上画圆形:从入门到实战
开发语言·python
小江的记录本7 小时前
【系统设计】《2026高频经典系统设计题》(秒杀系统、短链接系统、订单系统、支付系统、IM系统、RAG系统设计)(完整版)
java·后端·python·安全·设计模式·架构·系统架构
希望永不加班7 小时前
SpringBoot 中 AOP 实现权限校验(角色/权限)
java·spring boot·后端·spring
桌面运维家7 小时前
IDV云桌面vDisk机房部署方案模板特性解析
java·开发语言·devops
飞翔的SA7 小时前
从6.75%到100%!大模型Function Calling终极方案:Harness工程如何驯服
开发语言·ai·llm·harness
耿雨飞8 小时前
Python 后端开发技术博客专栏 | 第 09 篇 GIL 深度解析与并发编程实战 -- 多线程、多进程、协程的选型
开发语言·python
Stark-C8 小时前
NAS音乐必备神器,全平台音乐收割机!极空间部署『Go Music DL』
开发语言·后端·golang
哈密瓜刨冰8 小时前
深入浅出 SpringMVC:核心注解全解析与实战用法
java