TLAB是让每个线程各自分配决定好自己要进行分配内存的对象是哪个吗?比如有三个对象abc,三个线程会从abc中各选一个出来分配内存
时间: 2024-03-30 17:39:21 浏览: 40
内存分配
不完全正确。TLAB(Thread Local Allocation Buffer)是一种线程专有的内存分配缓冲区,每个线程都有自己的 TLAB。当一个线程需要分配对象时,它会先检查自己的 TLAB 是否足够分配所需的内存。如果足够,线程就在自己的 TLAB 中分配内存;否则,线程会向堆申请内存,然后在堆中分配内存。
在分配内存时,线程并不会从 abc 等对象中选取一个来分配内存,而是直接在自己的 TLAB 中分配内存,然后将对象的数据从线程的 TLAB 复制到堆中。因此,TLAB 的作用是避免多个线程竞争同一个锁来进行对象创建,从而提高程序的性能。而对象的选取是由线程自行决定的,并不受 TLAB 的影响。
阅读全文