page contents

ThreadLocal 造成内存泄漏的原因?

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