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

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

点赞
有用
分享分享

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

Java

    6.JVM中的期望计算EMA

    在上面提到的TLAB大小设计的时候,我们经常提到期望。这个期望是根据历史数据计算得出的,也就是每次输入采样值,根据历史采样值得出最新的期望值。不仅TLAB用到了这种期望计算,GC和JIT等等JVM机制中都用到了。这里我们来看一种TLAB中经常用到的EMA(ExponentialMovingAverage指数平均数)算法:

Java

    EMA算法的核心在于设置合适的最小权重,我们假设一个场景:首先采样100个100(算法中的前100个是为了排除不稳定的干扰,我们这里直接忽略前100个采样),之后采样50个2,最后采样50个200,对于不同的最小权重,来看一下变化曲线。

java

    可以看出,最小权重越大,变化得越快,受历史数据影响越小。根据应用设置合适的最小权重,可以让你的期望更加理想。

    这块对应的源代码:gcUtil.hpp的AdaptiveWeightedAverage类。

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

有用
分享