gpt4 book ai didi

java - CompileThreshold、Tier2CompileThreshold、Tier3CompileThreshold 和 Tier4CompileThreshold 控制什么?

转载 作者:太空狗 更新时间:2023-10-29 22:34:13 33 4
gpt4 key购买 nike

HotSpot 的 tiered compilation使用解释器,直到调用(对于方法)或迭代(对于循环)的阈值触发具有 self 分析的客户端编译。使用客户端编译,直到另一个调用或迭代阈值触发服务器编译。

Printing HotSpot's flags使用 -XX:+TieredCompilation 显示以下标志值。

intx CompileThreshold      = 10000 {pd product}        
intx Tier2CompileThreshold = 0 {product}
intx Tier3CompileThreshold = 2000 {product}
intx Tier4CompileThreshold = 15000 {product}

客户端和服务器编译器的标志太多了。这些标志控制哪些编译器?如果不是客户端和服务器,额外编译器的目的是什么?

在这种情况下是否忽略了 CompileThreshold 和 Tier2CompileThreshold?触发客户端编译时,Tier3CompileThreshold 控制什么?触发服务器编译时,Tier4CompileThreshold 控制什么?

最佳答案

advancedThresholdPolicy.hpp中的评论讨论不同的编译器层和阈值。请参阅该文件以进行更深入的讨论。

系统支持5个执行级别:

  • 第 0 级 - 口译员
  • 第 1 层 - 完全优化的 C1(无分析)
  • 第 2 层 - 具有调用和后台计数器的 C1
  • 第 3 层 - C1,具有完整分析(2 级 + MDO)
  • 4 级 - C2

C1 是客户端编译器。 C2 是服务器编译器。

在常见情况下,编译过程为:0 → 3 → 4。非典型情况根据 C1 和 C2 队列长度使用。当 C2 队列长度太长时使用第 2 层,以便该方法可以执行大约 30% 的速度,直到 C2 可以处理分析信息。如果确定该方法是微不足道的,那么它将使用第 1 层进行编译,因为它将生成与第 4 层相同的代码。

阈值根据 C1 和 C2 队列的长度动态调整。

关于java - CompileThreshold、Tier2CompileThreshold、Tier3CompileThreshold 和 Tier4CompileThreshold 控制什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18345089/

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