JIT(just-in-time) 即时编译
来源:互联网 发布:恶魔的奶爸 知乎专栏 编辑:程序博客网 时间:2024/05/21 04:19
1. JIT 简介
JIT 是 just in time 的缩写, 也就是即时编译编译器。使用即时编译器技术,能够加速 Java 程序的执行速度。
Java通常通过 javac 将程序源代码编译转换成 Class文件(java 字节码),JVM 通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。
很显然,经过解释执行,其执行速度必然会比直接执行机器码慢很多。为了提高执行速度,引入了 JIT 技术。
当虚拟机发现某个方法或代码块运行特别频繁时,就会把这些代码认定为“Hot Spot Code”(热点代码),为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各层次的优化,完成这项任务的正是 JIT 编译器。
2. JIT 编译过程
当 JIT 编译启用时(默认是启用的),JVM 读入.class 文件解释后,将其发给 JIT 编译器。JIT 编译器将字节码编译成本机机器代码,下图展示了该过程。
3. Hot Spot 编译
当 JVM 执行代码时,它并不立即开始编译代码。这主要有两个原因:
- 如果这段代码本身在将来只会被执行一次,那么编译就是在浪费精力。如果一段代码频繁的调用方法,或是一个循环,也就是这段代码被多次执行,那么编译就非常值得了。Hot Spot VM 采用了 JIT compile 技术,将运行频率很高的字节码直接编译为机器指令执行以提高性能。以 method 为翻译单位,还会保存起来,第二次执行就不用翻译了,直接执行。
- 为了最优化,当 JVM 执行某一方法或遍历循环的次数越多,就会更加了解代码结构,那么 JVM 在编译代码的时候就做出相应的优化。
运行过程中会被即时编译器编译的“热点代码”有两类:
- 被多次调用的方法。
- 被多次调用的循环体。
4. 参考资料
https://www.ibm.com/developerworks/cn/java/j-lo-just-in-time/index.html
http://wiki.jikexueyuan.com/project/java-vm/javac-jit.html
阅读全文
0 0
- JIT(just-in-time) 即时编译
- Java的即时编译(Just In Time, JIT)及其优化
- Java中的即时编译(Just-in-time compilation)
- JIT(即时编译)
- JIT(即时编译)
- JIT(即时编译)
- Just in Time Compiler (JIT) in Hotspot
- 准时制生产方式(Just In Time简称JIT)
- JVM即时编译(JIT)
- disable just-in-time (JIT) debugging的两个方法
- JIT - 即时编译
- jit即时编译
- 浅析 JIT 即时编译技术
- To enable just-in-time (JIT) debugging错误的解决方式
- 什么是即时编译(JIT)!?OpenJDK HotSpot VM剖析
- just-in-time information retrieval
- 让人才“Just in Time”!
- 什么是Just In Time编译器?
- IIS部署的网站访问时报错,错误信息:编译器错误信息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework……
- 程序文件与预处理
- 计算机硬件系统基础知识板书
- hdu1207(汉诺塔II)
- 合理的估算线程池的大小
- JIT(just-in-time) 即时编译
- 把ImageView转换为位图
- 享元模式 | Flyweight Pattern
- 用swaks进行发件人伪造
- java 构造方法与静态方法
- jQuery节点创建与属性的处理
- 博客搬家了
- 从零开始使用TensorFlow可视化工具Tensorboard
- (2)语法2:数组、函数、函数一些细节、匿名函数、动态函数