本篇文章围绕执行引擎,深入浅出的解析执行引擎中解释器与编译器的解释执行和编译执行、执行引擎的执行方式、逃逸分析带来的栈上分配、锁消除、标量替换等优化以及即时编译器编译对热点代码的探测
执行引擎
hotspot执行引擎结构图
执行引擎分为解释器、JIT即时编译器以及垃圾收集器
执行引擎通过解释器/即时编译器将字节码指令解释/编译为对应OS上的的机器指令
本篇文章主要围绕解释器与即时编译器
解释执行与编译执行
Java虚拟机执行引擎在执行Java代码时,会有两种选择:解释执行和编译执行
解释执行:通过字节码解释器把字节码解析为机器语言执行
编译执行:通过即时编译器产生本地代码执行
Class文件中的代码到底是解释执行还是编译执行只有Java虚拟机自己才能判断准确
编译过程
经典编译原理: 1.对源码进行词法,语法分析处理 2.把源码转换为抽象语法树
javac编译器完成了对源码进行词法,语法分析处理为抽象语法树,再遍历抽象语法树生成线