是否在TLAB中分配了ThreadLocal?

Ros*_*atl 3 java performance memory-management thread-local

我想,ThreadLocal变量是在Thread Local allocation Buffer(s)或TLABs中分配的,我是对的吗?

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

gus*_*afc 7

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

实际上,解释就在您所关注的博客文章中:

线程本地分配缓冲区(TLAB)是Eden的一个区域,用于由单个线程分配.它使线程能够使用线程本地顶部和限制指针进行对象分配,这比在线程间共享的顶部指针上执行原子操作要快.

每个线程都从它自己的Eden块中分配内存,这是堆的"Generation 0"部分.几乎所有东西都存储在TLAB中一段时间​​ - 很可能也是你的ThreadLocals - 但是在gen0垃圾收集之后它们会从那里移开.TLAB可以更快地进行分配,而不是让其他线程无法访问内存.来自您链接到的同一博客的更易于访问的描述是一个小线程隐私,请.