概述
JIT编译器
1、概述
JVM设计者们对于解释器的初衷仅仅是单纯地为了满足Java程序实现跨平台,因此避免采用静态编译的方式直接生成本地机器指令,从而产生了实现解释器在运行时采用逐行解释字节码执行程序的想法。
解释器真正意义上所承担的角色就是一个运行时“翻译者”,将字节码文件中的内容"翻译"为对应平台的本地机器码指令执行。当一条字节码指令被解释执行完成后,接着再根据PC寄存器中记录的下一条需要被执行的字节码指令执行的解释操作。
当虚拟机发现某个方法或代码块地运行特别频繁(对于很多重复的代码将会重复解释,而即时编译器解决了重复解释的过程),就会把这些代码认定为"热点代码",为了提高热点代码的执行效率,在运行时,虚拟机将回把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compiler)。
解释器与即时编译器两者各有优势:
- 当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行(不缓存机器码)
- 当程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获取更高的效率(缓存机器码)
2、代码优化
Java程序员都有一个共同的认知,以编译方式执行本地代码比解释方式更快,其中除去虚拟机解释执行字节码时额外消耗的时间(重复解释字节码)以外,还有一个很重要的原因就是JDK设计团队几乎把对代码的所有优化措施都集中在了即时编译器之中(减少执行的代码数)。
JIT编译器对代码优化的范围是相当广。
最后
以上就是俏皮溪流为你收集整理的JIT编译器JIT编译器的全部内容,希望文章能够帮你解决JIT编译器JIT编译器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复