JAVA编译器
java是解释型语言,但是为了加快java的运行速度,java编译器横空出世。
解释运行效率低,为了提升代码的执行性能。JDK提供将字节码编译为机器代码的支持,编译在后台运行,通常成为JIT编译器。在执行过程中对执行效率高的代码进行编译,对执行不频繁的代码则继续采用解释的方式。编译的好处有哪些呢,让我们看看下面的例子:
1.方法内联
对于java语言来说,通常要调用多个方法完成功能。执行时要经历多次参数传递。采用方法内联的方式把调用的方法指令直接植入到当前方法中。
例如:
public void bb(){ cc(); } public void cc(){ ... }
当编译时,如果cc编译完的字节数小于等于35字节,那么会演变成类似的结构
publicvoidbb(){
//cc内容
}
2.去虚拟化
去虚拟化是指在装载CLASS文件后,进行类层次的分析,如发现类中的方法只提供一个实现类,那么对于调用了此方法的代码,也可进行方法内联,从而提升执行的性能。
3.冗余消除
指在编译时,根据运行时的状况进行代码折叠或消除。
4.标量替换
用简单变量替换复合对象。如用int取代Integer
5.栈上分配
如果某个对象没有逃逸,那么直接在栈上直接创建该对象。
6.同步消除
如果发现同步对象未逃逸,那么也就没有同步的必要了。
相关推荐
89467505 2020-05-08
82921934 2020-05-04
82921934 2020-02-18
84520193 2020-01-30
80991231 2019-11-04
85981936 2019-10-24
86123158 2019-09-08
86123158 2019-07-01
82921934 2019-06-27
cHeNjUiOr 2010-06-16
89921237 2019-06-05
magicandy 2019-02-14
86123158 2019-03-12
89921237 2019-03-09
89467505 2019-04-22
wangkuixing 2018-03-21
80234950 2017-09-10
cHeNjUiOr 2015-03-09
linuxweiyh 2015-02-02