ThreadLocal会不会发生内存泄漏?

java问题王 Java每日一问 发布时间:2021-10-22 10:48:12 阅读数:8701 1
下文讲述今天早上同事咨询的一个问题"ThreadLocal会发生内存泄漏"吗?
ThreadLocal会发生内存泄漏
由于ThreadLocalMap中使用ThreadLocal的弱引用作为key 当一个ThreadLocal没有外部强引用来引用它 那么系统 GC 的时候,这个ThreadLocal会被回收,则会出现ThreadLocalMap中key为null的Entry 就没有办法访问这些key为null的Entry的value 如果当前线程再迟迟不结束的话 这些key为null的Entry的value就会一直存在一条强引用链 Thread Ref -> Thread -> ThreaLocalMap -> Entry -> value永远无法回收,则造成内存泄漏
ThreadLocal中的get(),set(),remove()的时候都会清除线程ThreadLocalMap里所有key为null的value
---------------------------------------------------------------------------------------------
但是使用static的ThreadLocal,延长了ThreadLocal的生命周期,可能导致的内存泄漏
分配使用了ThreadLocal又不再调用get(),set(),remove()方法,那么就会导致内存泄漏
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaProblem/202110/1533.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者