JVM解释器与即时编译

1、解释器

JVM可以加载字节码即.class文件,然后边翻译边执行,因而被称为解释型编程语言(但是解释的过程就是编译一条机器码执行一条,且JVM中存在即时编译器编译热点代码,所以也被成为半解释半执行的编程语言)

2、即时编译(Jit)

JVM中还存在着即时编译器优化代码执行,HotSpot中的即时编译器分为client模式与server模式,又称为c1、c2编译器(jdk1.7默认server模式),他会检测代码中的热点代码(即多次调用的方法或循环的代码块),这些代码如果每次都通过解释器解释执行无疑大大降低了运行效率,因此Jit编译器将他们编译成本地代码,则下次调用时就不需要解释器再次解释执行。

Jit编译器检测热点代码:

1、方法计数器:记录方法调用的次数
2、回边计数器:记录代码块循环次数
当计数器数值大于默认阈值或指定阈值时,方法或代码块会被编译成本地代码。
Java代码编译过程图:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_38071004/article/details/80916552
今日推荐