加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 是否在TLAB中分配了ThreadLocal?

发布时间:2020-12-15 04:54:00 所属栏目:Java 来源:网络整理
导读:我想,ThreadLocal变量是在Thread Local allocation Buffer(s)或TLABs中分配的,我是对的吗? 我没有成功找到任何文件,说明究竟是什么让一些类存储在TLAB中.如果您了解一些,请发布链接. 解决方法 不,这是怎么回事: 从1.4开始,Java中的每个线程都有一个名为thr
我想,ThreadLocal变量是在Thread Local allocation Buffer(s)或TLABs中分配的,我是对的吗?

我没有成功找到任何文件,说明究竟是什么让一些类存储在TLAB中.如果您了解一些,请发布链接.

解决方法

不,这是怎么回事:
从1.4开始,Java中的每个线程都有一个名为threadLocals的字段,其中保存了映射.每个threadLocal都有一个结构索引,所以它不使用hashCode().想象一个数组,每个ThreadLocal都保留一个插槽索引.

当线程死亡并且没有更多引用它时,ThreadLocals是GC’d.很简单的想法.

您可以通过扩展Thread并添加一个字段来保存引用来实现自己的ThreaLocal.然后将Thread转换为您自己的类并获取数据.

所以它不是TLAB,它仍然像任何其他对象一样堆.

从历史上看,存在静态WeakHashMap的实现,这些实现访问数据的速度非常慢.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读