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

相关推荐
z***I3944 小时前
JavaScript爬虫应用案例
开发语言·javascript·爬虫
帅中的小灰灰4 小时前
C++编程原型设计模式
开发语言·c++
清风徐来QCQ4 小时前
javaScript(map,ref,?,forEach,watch)
java·前端·javascript
7***n755 小时前
Java构建工具
java·开发语言
u***u6855 小时前
Kotlin多平台开发实践
android·开发语言·kotlin
Dandelion____z5 小时前
AI 驱动业务的致命风险:如何用架构设计守住安全底线?
java·大数据·人工智能·spring boot·aigc·jboltai
Q***K555 小时前
Kotlin与Java互操作指南
java·开发语言·kotlin
星月前端5 小时前
[特殊字符]面向 ArcGIS for JavaScript(4.x)开发者的「坐标系统(CRS / 投影)」全面解读
开发语言·javascript·arcgis
星空的资源小屋5 小时前
永久删除文件利器:Permadelete
java·javascript·人工智能
2201_757830875 小时前
Stream的终结方法
java·服务器·前端