What is JIT
JIT是Just In Time的简写,JIT是编译器的一种特性,他的功能是将解释执行的代码编译成mache code,从而消除解释过程开销,提升应用性能,目前支持JIT功能的语言有:Java,JavaScript,PHP, Perl, Python,Ruby,.Net等,可以说JIT是目前主流解释型语言消除先天缺陷的首选技术,与之相似的技术还有AOT,博主对AOT了解比较少,就不展开来讲啦。
How JIT apply to Java
Java应用JIT技术由来已久,总所周知Java的Code Cache在JDK8以前保存在方法区,JDK8以后挪到了堆上的元数据空间(哈哈,Java程序员面试必背的知识点),这里的Code Cache就是保存mache code的空间。Java程序执行一开始是在Interpreter的解释下执行的,每执行一次,函数的计数器就会增加一次,当函数执行次数达到一定量级时,就会被编译成machine code放到code cache,当然,在编译的过程中会涉及到一些optimization,比如inline和osr等,这里mache code分为两个级别,分别通过C1-Compiler、C2-Compiler进行编译,C2-Compiler编译后的代码将会得到巨大的性能提升。
JIT Affect
代码经过JIT编译成mache code一方面会带来巨大的性能提升,另一方面会给定位问题带来难度
public class JitTest {
public void f1() {
while (true) {
f2();
}
}
public void f2() {