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

相关推荐
柒.梧.几秒前
手写Tomcat的实现代码分享
java·tomcat
y1y1z1 分钟前
Spring MVC教程
java·spring·mvc
火山灿火山6 分钟前
Qt常用控件(五) - 多元素控件
开发语言·qt
熬了夜的程序员6 分钟前
【Rust学习之路】序
开发语言·后端·学习·rust
北慕阳9 分钟前
背诵-----------------------------
java·服务器·前端
say_fall9 分钟前
C语言编程实战:每日一题:用栈实现队列
c语言·开发语言
没有bug.的程序员10 分钟前
AOT 与 GraalVM Native Image 深度解析
java·jvm·测试工具·aot·gc·gc调优·graalvm native
deng-c-f11 分钟前
C/C++内置库函数(4):c++左右值及引用的概念、move/forward的使用
c语言·开发语言·c++
零雲15 分钟前
java面试:怎么保证消息队列当中的消息丢失、重复问题?
java·开发语言·面试
冬夜戏雪15 分钟前
【java学习日记】【12.11】【11/60】
java·开发语言