page contents

ThreadLocal 造成内存泄漏的原因?

小柒 发布于 2022-10-22 13:49
阅读 978
收藏 0
分类:高并发架构
4347
王昭君
王昭君
ThreadLocalMap 中使用的 key 为 ThreadLocal 的弱引用,而 value 是强引
用。所以,如果 ThreadLocal 没有被外部强引用的情况下,在垃圾回收的
时候,key 会被清理掉,而 value 不会被清理掉。这样一来,
ThreadLocalMap 中就会出现 key 为 null 的 Entry。假如我们不做任何措施
的话,value 永远无法被 GC 回收,这个时候就可能会产生内存泄
露。ThreadLocalMap 实现中已经考虑了这种情况,在调用 set()、
get()、remove() 方法的时候,会清理掉 key 为 null 的记录。使用
完 ThreadLocal 方法后 最好手动调用 remove()方法
请先 登录 后评论