有这篇文章就够了——JVM TLAB 分析(六)

开课吧开课吧锤锤2021-04-21 09:53

点赞
有用
分享分享

    Java编程语言是一种简单、面向对象、分布式、解释型、健壮安全、与系统无关、可移植、高性能、多线程和动态的语言。如今Java已经广泛应用于各个领域的编程开发。

Java

    7.6.MinTLABSize

    说明:最小TLAB大小。单位是字节

    默认:2048

    举例:-XX:TLABSize=4096

    7.7.TLABAllocationWeight

    说明:TLAB初始大小计算和线程数量有关,但是线程是动态创建销毁的。所以需要基于历史线程个数推测接下来的线程个数来计算TLAB大小。一般JVM内像这种预测函数都采用了EMA。这个参数就是图06中的最小权重,权重越高,最近的数据占比影响越大。TLAB重新计算大小是根据分配比例,分配比例也是采用了EMA算法,最小权重也是TLABAllocationWeight

    默认:35

    举例:-XX:TLABAllocationWeight=70

    7.8.TLABWasteTargetPercent

    说明:TLAB的大小计算涉及到了Eden区的大小以及可以浪费的比率。TLAB浪费指的是上面提到的重新申请新的TLAB的时候老的TLAB没有分配的空间。这个参数其实就是TLAB浪费占用Eden的百分比,这个参数的作用会在接下来的原理说明内详细说明

    默认:1

    举例:-XX:TLABWasteTargetPercent=10

    7.9.TLABRefillWasteFraction

    说明:初始最大浪费空间限制计算参数,初始最大浪费空间限制=当前期望TLAB大小/TLABRefillWasteFraction

    默认:64

    举例:-XX:TLABRefillWasteFraction=32

    7.10.TLABWasteIncrement

    说明:最大浪费空间限制并不是不变的,在发生TLAB缓慢分配的时候(也就是当前TLAB空间不足以分配的时候),会增加最大浪费空间限制。这个参数就是TLAB缓慢分配时允许的TLAB浪费增量。单位不是字节,而是MarkWord个数,也就是Java堆的内存最小单元,64位虚拟机的情况下,MarkWord大小为3字节。

    默认:4

    举例:-XX:TLABWasteIncrement=4

    以上内容由开课吧老师干货满满张哈希提供,更多Java教程尽在开课吧广场Java教程频道。

有用
分享