从原理聊JVM(五):JVM的编译过程和优化手段 | 京东云技术团队

💡 原文中文,约3700字,阅读约需9分钟。
📝

内容提要

前端编译将Java源码编译成Class文件,包括准备、解析与填充符号表、注解处理器和分析与字节码生成四个步骤。编译模式分为client compiler和server compiler,分别进行方法优化和全局优化。OSR是栈上替换,仅替换循环代码体的入口。

🎯

关键要点

  • 前端编译将Java源码编译成Class文件的过程分为四个步骤:准备、解析与填充符号表、注解处理器和分析与字节码生成。
  • 准备阶段初始化插入式注解处理器。
  • 解析与填充符号表将源代码转变为标记集合,并构造抽象语法树,符号表存储变量名、过程名称等信息。
  • 注解处理器作为编译器插件,执行特定注解的逻辑,生成代码,并在语法树修改时回到解析阶段。
  • 分析与字节码生成阶段包括语义分析,确保语法树逻辑正确,分为标注检查、数据及控制流分析、解语法糖和字节码生成。
  • 运行时编译将代码编译成本地代码,JVM先进行解释执行,后根据热点探测进行编译。
  • Sun JDK根据方法调用计数器和回边计数器决定是否采用编译执行。
  • 编译模式分为client compiler和server compiler,client compiler主要进行方法内联和冗余消除,server compiler进行全局优化。
  • OSR(栈上替换)仅替换循环代码体的入口,解决方法编译优化的时机问题。
➡️

继续阅读