执行引擎

1. java程序的编译和解释运行的原理:

  • 解释器:当 jvm 启动时会根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节码文件中的内容翻译成对应平台的本地机器指令执行
  • JIT:JVM 将源代码直接编译成和本地机器平台相关的机器语言

 

2. jvm 解释器与jit 各自的优劣:

  优势 劣势
解释器

1.当程序启动后,解释器可以马上发挥作用,省去编译的时间,立即实行

2.解释执行在进行激进优化不成立时,作为编译期的后备选项

字节码逐行解释执行,执行效率不如jit
jit 编译为本地代码后执行效率高 jit想要发挥作用,把代码编译成本地代码,需要一定的时间。
总结 当虚拟机启动时,解释器可以首先发挥作用,而不必等待即时编译器全部编译完成再执行,这样可以省去许多不必要的编译时间。并随着程序运行时间的推移,即时编译器逐渐发挥作用,根据热点探测功能,将有价值的字节码编译为本地机器指令,以换取更高的程序执行效率

 

3. 热点探测确定何时 jit:HotSpot 会为每个方法建立两个计数器,分别为方法调用计数器和回边计数器

  • 方法调用计数器:用于统计方法的调用次数
  • 回边计数器:用于统计循环体执行的循环次数
  • 计数器计数次数可以用 -XX:CompileThreshold 来人为设定,默认为 10000

4. 解释器与 jit 使用的命令设置:

  • -Xint:完全采用解释器模式执行
  • -XComp:完全采用 jit 模式执行,若 jit 出现问题,解释器会介入执行
  • -Xmixed:采用解释器+ jit 混合共同执行

 

posted @ 2021-07-29 21:29  programmLover  阅读(35)  评论(0编辑  收藏  举报