TLAB Sizing

目录

https://alidg.me/blog/2019/6/21/tlab-jvm

As it turns out, for even more faster allocations, JVM divides the Eden space into a few more sub-regions, each dedicated to a particular thread. Each of those dedicated regions is called Thread-Local Allocation Buffers or TLAB for short.

uintx MinTLABSize = 2048 {product}

TLAB Sizing#


If the -XX:TLABSize flag was set to a positive number (Defaults to zero), then the initial size of a TLAB would be equal to -XX:TLABSize divided by Heap Word Size. Otherwise, the initial size would be a function of the average number of allocating threads. Also, the TLAB size can’t be:

  • More than a maximum value.

  • Less than a minimum value determined by -XX:MinTLABSize flag.

If the -XX:ResizeTLAB is enabled (Which is by default), then JVM can adaptively resize the TLAB size. The new size is always depends on three major factors:

  • Number of application threads

  • Allocation rate

  • Eden Size

Ref#

https://alidg.me/blog/2019/6/21/tlab-jvm https://blogs.oracle.com/jonthecollector/the-real-thing https://chowdera.com/2021/04/20210412130159067f.html