六、JVM之编译于代码优化

编译器优化

.java->.class的过程

一、Javac编译器

1) 解析与填充符号表
  • 1.词法、语法分析
  • 2.填充符号表
2) 注解处理器
3) 语义分析与字节码生成
  • 1.标注检查
  • 2.数据及控制流分析
  • 3.解语法糖
  • 4.字节码生成

二、Java语法糖

  • 1.泛型与类型擦除
  • 2.自动装箱、拆箱与遍历循环
  • 3.条件编译

运行期优化

即时编译器(Just In Time Compiler,JIT)
当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。
在程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获得更高的执行效率

编译对象与触发条件

"热点代码"
被多次调用的方法
被多次执行的循环体
热点探测
基于采样
基于计数器

编译过程

三段式编译器
HIR
LIR
JIT编译过程是一个虚拟机中最能体现技术水平也是最复杂的部分。

编译优化技术

  • 1.公共子表达式消除
  • 2.数组边界检查消除
  • 3.方法内联
  • 4.逃逸分析
    栈上分配
    同步消除
    标量替换

可以做到运行期性能监控

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,802评论 3 83
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,500评论 25 709
  • 今天会自己荡秋千了,从美术馆走回了家
    封之之阅读 208评论 0 0
  • “当你的秀发拂过我的钢枪” 其实你也有你的柔软 只是被你的刚强掩盖 当思念时刻来临 心中的那片温柔再无法隐藏 平凡...
    君子梁下阅读 611评论 5 3
  • 记忆中的那群被被称为老同学的老同学们,你们还好吗? 依然清晰的的记得,在那年的九月份,一个金黄的季节,我们来自四面...
    莘木阅读 279评论 1 0