我们在开发java程序的时候,离不开的JVM调优。这一块也是我们面试求职的重点!
我简单的从三个方面介绍TLAB!!
TLAB出现的契机是什么?
我们知道堆区是我们所有线程共享的区域,这就会造成在分配对象实例时,需要通过加锁的机制,来解决数据的安全性。进而影响内存空间分配速度。
而TLAB可以提升对象实例在堆区的分配速度。
什么是TLAB?
TLAB是JVM为每个线程分配的一块私有的缓存区域,来提升内存分配的吞吐量。线程在分配对象时,JVM会将TLAB作为内存分配的首选!
TLAB是包含在年轻代的Eden空间内,仅占整个Eden区的1%。
TLAB在JVM中的参数怎么使用?
# 设置是否开启TLAB空间
-XX:UseTLAB
# 设置TLAB空间占用Eden空间的百分比大小
-XX:TLABWasteTargetPercent
最后你需要知道的是:谈到TLAB,你需要抛开栈上分配。当对象需要在内存分配时,一旦对象在TLAB空间分配内存失败,JVM就会尝试着通过使用加锁机制确保数据操作的原子性,从而直接在Eden空间中分配内存。
对象分配过程:

对象在TLAB分配详细流程图:

608

被折叠的 条评论
为什么被折叠?



