JVM如何决定对方法进行JIT编译(将方法分类为“热”)?
我已经使用过 ,我知道JIT编译器的基本技术以及为什么使用JIT编译。-XX:+PrintCompilation
然而,我仍然没有发现JVM如何决定JIT编译一个方法,即“当正确的时间到来时,JIT编译一个方法”。
我假设每个方法都开始被解释,只要它不被归类为“热方法”,它就不会被编译,我是对的吗?我脑子里有一些东西,我读到一个方法在执行至少10.000次时被认为是“热的”(在解释该方法10.000次后,它将被编译),但我不得不承认我不确定这个或我在哪里读过这个。
所以总结一下我的问题:
(1)只要每个方法没有被归类为“热”方法(因此已经编译),是否每个方法都被解释,或者即使方法不是“热”,也有理由编译方法?
(2)JVM如何将方法分为“非热”和“热”方法?执行次数?别的东西?
(3) 如果“热”方法有一定的阈值(如执行次数),是否有 Java 标志 () 来设置此阈值?-XX:...