美文网首页
java解释和jit编译

java解释和jit编译

作者: 蒸汽飞船 | 来源:发表于2018-07-10 23:22 被阅读16次

Just In Time即时编译器。当JVM发现某个方法或代码块运行频繁时,就会把这段代码认定为热点代码,通过JIT在运行时将这些代码编译成本地机器码,并进行相关优化。
在JIT未出现之前,字节码指令被解释器转译成对等的微处理器指令,并根据转译后的指令先后顺序依次执行,由于一个Java指令可能会被转译成十几或几十个对等的微处理器指令,这种模式执行的速度特别慢。
基于这种瓶颈,JIT技术应运而生了。对于需要使用JIT进行编译的字节码指令,相对于使用解释器来解释执行的方式来说,JIT只需要额外花费少许的编译时间,就可以提高代码执行的效率,节省执行时间。但是对于执行次数少的指令,也采用JIT进行编译则编译时额外花费的时间,加上执行的时间,不比解释执行的时间短。
基于解释器和即时编译器各自有其适应的优势特点,将两者集合起来,就是所谓的动态编译器dynamic compiler。动态编译器具体做法为,使用JIT执行热点字节码指令(被多次调用的方法或循环体的字节码指令),使用解释器执行非热点代码)。而至于热点字节码的判定,目前有两种算法,一种是基于采样的热点探测(周期性地检查各个线程的栈顶,经常出现在栈顶的方法代码就是热点代码),一种是基于计数器的热点探测(每个方法或其中的代码块对应有一个计数器,用来统计执行的次数,当执行次数超过一定阈值时则被认为是热点方法)。HotSpot虚拟机使用的是基于计数器的热点探测方法,它为每个方法准备了两个计数器,分别用于探测方法的调用次数和方法中循环体代码执行的次数,当计数器的值超过了阈值,则会触发JTI编译。触发了JIT编译后的代码,并不会停下来等待JIT编译完,而是继续解释执行,JIT编译的机器码等到下一次调用该方法或代码时才会被使用。

相关文章

  • java解释和jit编译

    Just In Time即时编译器。当JVM发现某个方法或代码块运行频繁时,就会把这段代码认定为热点代码,通过JI...

  • JIT和AOT

    前端编译、JIT、AOT简单解释JIT详细解释编译技术探讨 JVM中涉及JIT编译的参数大方法执行效率低的原因--...

  • 【009】2020.11.09 周一 --《Java JVM》

    Java JVM 《码出高效》JVM一章 字节码(Byte Code) 可以解释执行;也可JIT编译执行 起始4字...

  • Java方法的JIT编译

    Java方法执行一般会利用分层编译,先通过c1解释执行。方法执行编译等级逐渐提升,有机会通过JIT编译为特定平台汇...

  • JIT和可见性

    名词解释 JIT是just in time,即时编译技术。使用该技术,能提高JAVA程序的执行效率。可见性是一个线...

  • 【转载】Java之什么是JIT (Just In Time)?

    JIT概念 JIT:Just In Time Compiler,一般翻译为即时编译器,这是是针对解释型语言而言的,...

  • 7.虚拟机字节码执行引擎

    虚拟机字节码执行引擎 执行引擎在执行Java代码时,有两种方式:解释执行、编译执行(JIT产生本地代码)。 1. ...

  • Java - JIT即时编译

    Java - JIT即时编译 前端编译器 VS 后端编译器 前端编译器:javac 编译,在程序运行前,将 源文件...

  • 编译期的优化和运行期的优化

    编译期存在以下情况: 编译器(idea)把java文件编译称为class文件 2.JIT编译器(hotspot的 ...

  • JIT即时编译原理

    JIT是什么 JIT中文名是即时编译。代码执行一般分为解析执行和编译执行。编译执行又分为运行前编译和运行时编译。 ...

网友评论

      本文标题:java解释和jit编译

      本文链接:https://www.haomeiwen.com/subject/vqsbyftx.html