什么是JIT 编译器
Posted 南蝶wind
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是JIT 编译器相关的知识,希望对你有一定的参考价值。
不懂,抄几段:http://www.maixj.net/ict/jit-15817
首先,我们大家都知道,通常通过 javac 将程序源代码编译,转换成 java 字节码,JVM 通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢很多。为了提高执行速度,引入了 JIT 技术。
解释(Interpreter):解释就是把源程序以句为单位,每句每句的解释并执行;如果语句出现在循环体当中,比如循环10次,该语句就要被解释执行10次;解释执行过程不产生目标代码。很多脚本语言都是解释执行的。
编译(Compilation):编译是把源代码一次性翻译成目标代码,目标代码可能是可直接运行的机器语言,或是已存在相应翻译器的不可执行语言。比如C/C++就是典型的编译之后才能执行的高级编程语言,这种编译也被称为静态编译(Static Compilation)。编译有时还指将高级语言编译成一种中间形态的字节码,比如java语言,这种中间形态的字节码比如要在JVM里面才能被执行。
JIT的意思是说,首先仍然是compilation,但有caching,不用像解释那样把循环体里面出现的代码重复解释;同时有目标机器代码。这是相对于interpretation的好处。另外相对于静态编译的好处是,在编译过程对代码进行优化。选择性的编译某个函数或任意某段代码。JIT具体的做法是这样的:当函数第一被调用时,JIT将该函数编译成机器语言;当再次遇到该函数时则直接从cache中执行已编译好的机器语言。
以上是关于什么是JIT 编译器的主要内容,如果未能解决你的问题,请参考以下文章