java - ThreadLocal是在TLAB中分配的吗?

标签 java performance memory-management thread-local

我想,ThreadLocal 变量是在线程本地分配缓冲区或 TLAB 中分配的,对吗?

我没有成功找到任何文档来说明是什么让某些类存储在 TLAB 中。如果您知道一些,请发布链接。

最佳答案

I was not successfull to find any document stating what exactly makes some class stored in TLAB. If you know some, please post a link.

实际上,解释就在您链接到的博客文章中:

A Thread Local Allocation Buffer (TLAB) is a region of Eden that is used for allocation by a single thread. It enables a thread to do object allocation using thread local top and limit pointers, which is faster than doing an atomic operation on a top pointer that is shared across threads.

每个线程都从自己的 Eden block (堆的“第 0 代”部分)分配内存。几乎所有内容都会在 TLAB 中存储一段时间 - 很可能你的 ThreadLocal 也是如此 - 但在 gen0 垃圾收集后它们会离开那里。 TLAB 的作用是加快分配速度,而不是让其他线程无法访问内存。来自您链接到的同一博客的更易于访问的描述是 A little thread privacy, please .

关于java - ThreadLocal是在TLAB中分配的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4919524/

相关文章:

java - 如何将包含负数的字符串解析为整数?

MySQL 特定的查询性能调优

c - 如果同一个共享库工作正常,为什么静态库会导致对齐问题?

c++ - 动态内存管理场景

c++ - C++ 类的内存布局是否会受到地址空间布局随机化的影响

java - 在我的插件中添加特定的代码路径以支持多个 IntelliJ 版本

java - 为什么具有权限的 Java Files.createFile 无法正常工作?

java - CXF JAX-RS 拦截器的中断执行

python - 当读取具有某些字符的某些数据时, string.count() 会大幅减慢

performance - 实现 (^)