首页 > 其他 > 详细

ThreadLocal为什么不用强引用

时间:2020-06-01 18:03:56      阅读:276      评论:0      收藏:0      [点我收藏+]

那为什么使用弱引用而不是强引用??

我们看看Key使用的

key 使用强引用

当hreadLocalMap的key为强引用回收ThreadLocal时,因为ThreadLocalMap还持有ThreadLocal的强引用,如果没有手动删除,ThreadLocal不会被回收,导致Entry内存泄漏。 譬如  设置:ThreadLocal=null  以后,应该会被回收的,但实际情况是ThreadLocalMap还有一个强引用,导致无法回收

key 使用弱引用

当ThreadLocalMap的key为弱引用回收ThreadLocal时,由于ThreadLocalMap持有ThreadLocal的弱引用,即使没有手动删除,ThreadLocal也会被回收。当key为null,在下一次ThreadLocalMap调用set(),get(),remove()方法的时候会被清除value值。

譬如  设置:ThreadLocal=null  以后,强引用已没有,ThreadLocalMap还有一个弱引用,下次GC就会被回收

ThreadLocal为什么不用强引用

原文:https://www.cnblogs.com/tiancai/p/13026434.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!