JIT编译器

JIT编译器是Java虚拟机的重要组成部分,它在程序运行时将热点代码编译成本地机器码,以提高执行效率。解释器用于快速启动程序,而JIT则通过优化代码提升长期运行的性能。JIT编译器执行多层优化,包括减少重复解释等,确保代码高效运行。
摘要由CSDN通过智能技术生成

JIT编译器

1、概述

​ JVM设计者们对于解释器的初衷仅仅是单纯地为了满足Java程序实现跨平台,因此避免采用静态编译的方式直接生成本地机器指令,从而产生了实现解释器在运行时采用逐行解释字节码执行程序的想法。

解释器真正意义上所承担的角色就是一个运行时“翻译者”,将字节码文件中的内容"翻译"为对应平台的本地机器码指令执行。当一条字节码指令被解释执行完成后,接着再根据PC寄存器中记录的下一条需要被执行的字节码指令执行的解释操作。

​ 当虚拟机发现某个方法或代码块地运行特别频繁(对于很多重复的代码将会重复解释,而即时编译器解决了重复解释的过程),就会把这些代码认定为"热点代码",为了提高热点代码的执行效率,在运行时,虚拟机将回把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compiler)。

​ 解释器与即时编译器两者各有优势:

  • 当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行(不缓存机器码)
  • 当程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获取更高的效率(缓存机器码)

2、代码优化

​ Java程序员都有一个共同的认知,以编译方式执行本地代码比解释方式更快,其中除去虚拟机解释执行字节码时额外消耗的时间(重复解释字节码)以外,还有一个很重要的原因就是JDK设计团队几乎把对代码的所有优化措施都集中在了即时编译器之中(减少执行的代码数)

​ JIT编译器对代码优化的范围是相当广。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值