JVM编译浅析

1.编译器与解释器的区别与优劣

编译器:将完整的用户代码经过一系列处理翻译成完整的目标语言。
解释器:直接利用用户提供的输入执行源程序中的操作。因此可以逐个语句的执行源程序。
编译器产生的机器语言目标程序通常比解释器快很多,代码的优化效果也比解释器好。但是利用解释器逐句执行的特点,解释器更容易进行错误诊断,与用户的交互效果也比编译器好。

2.一个编译器的结构

一个编译器可以分为前端和后端

  • 前端包括词法分析,语法分析,语义分析,中间代码生成。
  • 后端包括中间代码优化,代码生成,机器相关代码优化等。

另外在jvm中实际上是可以解释器和编译器共存的,而且大多数虚拟机都采取两者共存的形式,因为解释器方式可以快速启动运行,省去编译的时间;接着在运行的过程中,编译器逐渐把代码都编译成本地代码之后,便可以获得更高的执行效率。

3.常见编译优化技术

  • 逃逸分析:如果确定一个对象不会逃出方法之外,则可以在栈上分配,随栈帧出栈而销毁,速度更快;再是标量替换,可以将一个大对象,分解成多个小变量;再是同步消除,确定某变量不会逃出线程,则直接取消其同步锁

3.编译过程

JVM编译浅析_第1张图片

你可能感兴趣的:(JVM)