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