JVM编译浅析

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

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

2.一个编译器的结构

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

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

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

3.常见编译优化技术

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

3.编译过程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值