`
makeyouown
  • 浏览: 50613 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA编译器

    博客分类:
  • J2EE
 
阅读更多
java是解释型语言,但是为了加快java的运行速度,java编译器横空出世。
解释运行效率低,为了提升代码的执行性能。JDK提供将字节码编译为机器代码的支持,编译在后台运行,通常成为JIT编译器。在执行过程中对执行效率高的代码进行编译,对执行不频繁的代码则继续采用解释的方式。编译的好处有哪些呢,让我们看看下面的例子:

1.方法内联
对于java语言来说,通常要调用多个方法完成功能。执行时要经历多次参数传递。采用方法内联的方式把调用的方法指令直接植入到当前方法中。
例如:
public void bb(){
   cc();
}
public void cc(){
  ...
}


当编译时,如果cc编译完的字节数小于等于35字节,那么会演变成类似的结构
public void bb(){
   //cc内容
}
2.去虚拟化
去虚拟化是指在装载CLASS文件后,进行类层次的分析,如发现类中的方法只提供一个实现类,那么对于调用了此方法的代码,也可进行方法内联,从而提升执行的性能。

3.冗余消除
指在编译时,根据运行时的状况进行代码折叠或消除。

4.标量替换
用简单变量替换复合对象。如用int取代Integer

5.栈上分配
如果某个对象没有逃逸,那么直接在栈上直接创建该对象。

6.同步消除
如果发现同步对象未逃逸,那么也就没有同步的必要了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics