首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

学习JVM原理-17.初期编译与运行时JIT编译

2012-10-13 
学习JVM原理-17.早期编译与运行时JIT编译摘自《深入理解Java虚拟机》周志明著虽有那种直接把*.java变成本地

学习JVM原理-17.早期编译与运行时JIT编译
摘自《深入理解Java虚拟机》周志明著

虽有那种直接把*.java变成本地执行代码的编译器,但java的编译方式主要有两种:

  1. 前期编译:即SUN的javac, 把java编译成字节码; 运行时由解释器解释执行
  2. 运行时编译:JIT(Just in Time)编译器,运行时把Hot Spot(经常访问的代码)编译成本地代码执行(注意,JIT并不是JVM规范,有的JVM实现里没有JIT)


Java程序运行时就是 解释器 + JIT编译器 一起工作(你可以用-Xint禁止编译器)。解释器发现HotSpot后,如果已有对应的本地代码,就会让JIT执行这段代码;否则,会一边让JIT在后台编译,一边自己解释执行。有时JIT如果发现自己不能够执行本地代码,也会把任务交给解释器


另外,两种编译器都会做些优化动作:
  1.javac: 一个例子就是解除泛型这个语法糖,因为字节码是不认泛型的,List<String>在字节码里的类型就是List
  2.JIT: 比如内联
    

热点排行