JVM 有三种Mode:
1. interpreted mode (指将源代码编译成字节码, 运行时不包含热点编译。此模式强制JVM执行所有的字节码。这会降低运行速度,通常低10倍或更多。)
2. compiled mode (将全部字节码编译成机器语言)
3. mix mode (包含两部分: a. 将源代码编译成字节码, b. 在运行阶段 视情况进行热点编译)
热点编译的基本单位是方法。是否发生热点编译的条件有两个:
1. 方法的执行次数超过一定阈值(由参数CompileThreshold来设定)时,将此方法进行热点编译
2. 某个循环的次数超过一定阈值时,此循环所在的方法将被热点编译。当此种情况发生时,会产生栈上替换 (on stack replace -- OSR) . OSR 是JIT的动态切换技术, 在运行时将栈中代码替换编译后的机器码。
查看这些java 参数的初始设置, 可以使用以下命令查看:
java -XX:+PrintFlagsFinal -version | findstr CompileThreshold.