美文网首页
快速理解ThreadLocal以及内存泄漏的问题

快速理解ThreadLocal以及内存泄漏的问题

作者: 一枚路过的程序猿 | 来源:发表于2022-05-20 11:53 被阅读0次
ThreadLocal.png

上图简单的描述了一下ThreadLocal内部,接下来简单读取一下源代码从而发现内存泄漏的问题


ThreadLocal set().jpg
ThreadLocal map.set.jpg
ThreadLocaMap.Entry.jpg

为什么要把Key作为弱引用呢?

ThreadLocal<Object> tl = new ThreadLocal<Object>();
tl.set("abc");
tl.remove();

若是用强引用,即使设置tl=null,但是key依然指向ThreadLocal对象,所以会有内存泄漏,弱引用不会
如果ThreadLocal对象被回收,会导致Key变为null,意味着永远访问不到key指定的value,所以还会产生内存泄漏的问题
因此在使用ThreadLocal的时候,如果一旦确认不再使用对象,要进行手动Threadlocal.remove()

相关文章

网友评论

      本文标题:快速理解ThreadLocal以及内存泄漏的问题

      本文链接:https://www.haomeiwen.com/subject/gthfprtx.html