深入学习 JIT

一.jit

全称:just in time compiler.java 即时编译器.通过监测jvm在解释运行过程中代码执行的频率.将认定的热点代码通过优化直接编译为机器代码并保留下.当再次执行时直接运行相应代码.

1.1知识回顾

这里其实需要从代码的运行来讲.我们都知道cpu只能识别机器码.而诸如c++,java都是比较接近人类语言的高级语言.

c++在执行过程中,直接可以编译得到机器可以直接运行的.但在实际的编程过程中需要考虑平台cpu架构[x86与x64]的适配.即使得到编译后的二进制文件.通常情况下也无法在多个平台都可以运行起来.相比之下java在推出的过程中为了达到write once,run in anywhere.因为这样一来实际的编程开发者无需考虑具体的cpu架构,更多的去关心实际的业务开发.通过先编译得到字节码.也就是.class文件.然后通过jvm解释运行.虚拟机在中间解决了平台的差异.但是这样一来,相当于在中间插入了编译为字节码的过程,拉长整个执行流程.每次在执行过程中通过编译,解释这样的过程降低了java的执行效率.而有些时候部分代码并不是每次都会做出修改.能不能不要每次都执行编译,而jit就是这样一个技术,帮助java代码执行编译执行过程中,减少编译的过程,部分的代码编译为机器码后通过一定的规则保留下来,下次执行从而直接执行,从而提高整体java的运行效率. 那么问题来了,哪些代码会被jit带走成为机器码呢?

1.2整体流程

深入学习 JIT_第1张图片

然而并不是所有的代码都需要被选中成为机器码的.首先jit在执行编译将字节码保留成为机器码的过程也是需要耗费机器的性能.当一些未来可能仅仅执行一次的代码是不需要被成为热点代码,成本收益不高.再

你可能感兴趣的:(【编程基础】)