java - -XX :-TieredCompilation do? 究竟是什么

标签 java jvm jit

使用 java -XX:+PrintFlagsFinal 我找到了 TieredCompilation 标志,并在网上阅读了一下。

然而,我仍然不知道确切将它设置为 false 时会发生什么。

我知道编译系统支持5个执行级别,基本上分为解释器、C1和C2:

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

来源:http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/2b2511bd3cc8/src/share/vm/runtime/advancedThresholdPolicy.hpp#l34

两个问题:

(1) 通过设置-XX:-TieredCompilation,是否只是禁用了某些级别?如果是,是哪个?

(2) 是否有一些标志来决定是否禁用 C1 或 C2,或者根本不编译?

最佳答案

-XX:-TieredCompilation 禁用中间编译层(1、2、3),以便以最高优化级别 (C2) 解释或编译方法。

作为副作用,TieredCompilation 标志还会更改编译器线程的数量、编译策略和默认代码缓存大小。请注意,禁用 TieredCompilation

要禁用 C2 编译器并只保留 C1 而没有额外开销,请设置 -XX:TieredStopAtLevel=1

要禁用所有 JIT 编译器并在解释器中运行所有内容,请使用 -Xint

关于java - -XX :-TieredCompilation do? 究竟是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38721235/

相关文章:

java - 运行 Tomcat8 服务器 Ubuntu 15.10

c# - MethodImplOptions.AggressiveInlining 与 TargetedPatchingOptOut

c++ - 快速按需 C++ 编译

python - 从 numba jitted 函数调用非 jitted 函数

java - 这是抽象类的实例化吗?

java - 如何使用 Selenium 允许位置访问?

java - Junit 和 Selenium 的 Maven 编译错误

java - Win Tomcat "Use default"JVM 错误

java - 从 Java (JVM) 生态系统开始

oop - Scala 中对象引用的成本是多少?