gpt4 book ai didi

java - 什么是 TLAB(线程本地分配缓冲区)?

转载 作者:IT老高 更新时间:2023-10-28 21:15:22 28 4
gpt4 key购买 nike

我找不到可以清楚地解释这个概念的综合资料。我的理解是,一个线程在分配新对象的伊甸园中获得了一些内存。一个竞争线程最终将拥有一个有点连续的伊甸园。如果第一个线程用完其 TLAB 中的空闲区域会发生什么?它会请求一个新的伊甸园吗?

最佳答案

TLAB 的想法是减少线程之间的同步需求。使用 TLAB 可以减少这种需求,因为任何线程都有一个可以使用的区域,并且期望它是唯一使用该区域的线程。假设一个 TLAB 可以容纳 100 个对象,一个线程在分配第 101 个对象时只需要获取一个锁来申请更多的内存。如果没有 TLAB,每个对象都需要这样做。缺点当然是您可能会浪费空间。

大对象通常在 TLAB 之外分配,因为它们无法降低同步内存分配频率的优势。有些对象甚至可能不适合 TLAB。

您可以使用 -XX:TLABSize 标志设置 TLAB 的大小,但通常我不建议您乱用这些设置,除非您真的发现了可以解决的问题。

关于java - 什么是 TLAB(线程本地分配缓冲区)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43747221/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com