美文网首页
【精】关于ThreadLocal你应该知道的几个知识点

【精】关于ThreadLocal你应该知道的几个知识点

作者: 小北觅 | 来源:发表于2022-03-13 00:32 被阅读0次

本文主要回答如下几个问题,如果你已经知道了,太棒啦!那你可以关闭本文去看其他文章啦。

① Thread、ThreadLocal、ThreadLocalMap、value的内存布局。
② ThreadLocalMap的Entry为什么要继承自WeakReference?
③ 众所周知的内存泄露问题是怎么回事?如何解决?
④ 为什么我们建议ThreadLocal要用static的?
⑤ ThreadLocalMap怎么解决Hash冲突的?

一、内存布局

如下图所示:每个 Thread里面都有一个ThreadLocalMap,ThreadLocalMap中真正存储数据的是一个Entry数组,Entry的Key是ThreadLocal对象的弱引用。

<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;"></figcaption>

二、为什么继承自WeakReference?

补充一个知识点,Java中引用有四种:强软弱虚。强度依次减弱。只被弱引用关联的对象只能生存到下一次垃圾收集发生之前。 当垃圾收集器工作时,无论当前内存是否充足,都会回收掉只被弱引用关联的对象,因此弱引用一般用来指向非必须对象。

好的,接下来我们解释为什么ThreadLocalMap的Entry要继承自WeakReference。

相关文章

网友评论

      本文标题:【精】关于ThreadLocal你应该知道的几个知识点

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