相关疑难解决方法(0)

JVM如何决定JIT编译方法(将方法归类为"热门")?

我已经使用过-XX:+PrintCompilation,我知道JIT编译器的基本技术以及使用JIT编译的原因.

然而,我仍然没有发现JVM如何决定JIT编译方法,即"正确的时间来到JIT编译方法".

我是否正确地假设每个方法都开始被解释,并且只要它不被归类为"热方法"它就不会被编译?我有一些东西在脑后,我读到一个方法被认为是"热",当它执行至少10.000次(解释方法10.000次后,它将被编译),但我不得不承认我是不确定这个或我在哪里读到这个.

总结一下我的问题:

(1)只要没有将每种方法归类为"热"方法(并因此已被编译),或者即使它们不是"热门",也有理由编制方法?

(2)JVM如何将方法分为"非热"和"热"方法?执行次数?还要别的吗?

(3)如果"热"方法存在某些阈值(如执行次数),是否有Java标志(-XX:...)来设置此阈值?

java jit jvm jvm-hotspot

30
推荐指数
2
解决办法
5887
查看次数

CompileThreshold,Tier2CompileThreshold,Tier3CompileThreshold和Tier4CompileThreshold控制什么?

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

打印HotSpot的标志使用-XX:+ TieredCompilation显示以下标志值.

intx CompileThreshold      = 10000 {pd product}        
intx Tier2CompileThreshold = 0     {product}           
intx Tier3CompileThreshold = 2000  {product}           
intx Tier4CompileThreshold = 15000 {product}           
Run Code Online (Sandbox Code Playgroud)

仅有客户端和服务器编译器的标志太多.哪些编译器由这些标志控制?如果不是客户端和服务器,其他编译器的目的是什么?

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

java jit jvm-hotspot compiler-flags

20
推荐指数
1
解决办法
6207
查看次数

标签 统计

java ×2

jit ×2

jvm-hotspot ×2

compiler-flags ×1

jvm ×1