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 执行代码时,它并不立即开始编译代码。这主要有两个原因:

  1. 如果这段代码本身在将来只会被执行一次,那么编译就是在浪费精力。如果一段代码频繁的调用方法,或是一个循环,也就是这段代码被多次执行,那么编译就非常值得了。Hot Spot VM 采用了 JIT compile 技术,将运行频率很高的字节码直接编译为机器指令执行以提高性能。以 method 为翻译单位,还会保存起来,第二次执行就不用翻译了,直接执行。
  2. 为了最优化,当 JVM 执行某一方法或遍历循环的次数越多,就会更加了解代码结构,那么 JVM 在编译代码的时候就做出相应的优化。

运行过程中会被即时编译器编译的“热点代码”有两类:

  1. 被多次调用的方法。
  2. 被多次调用的循环体。

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

JIT(just-in-time) 即时编译相关推荐

  1. JVM 虚拟机 AOT 和 JIT 即时编译

    文章目录 JVM 虚拟机 AOT 和 JIT 即时编译 1.AOT 2.JIT JVM 虚拟机 AOT 和 JIT 即时编译 1.AOT AOT 是 Ahead Of Time ,运行前编译 与 JI ...

  2. java全jit编译_JVM即时编译(JIT)(转载)

    原文出处:https://blog.csdn.net/sunxianghuang/article/details/52094859 什么是JIT 1.动态编译(dynamic compilation) ...

  3. jit即时编译_热点中的即时编译器(JIT)

    jit即时编译 即时编译器(JIT)的概念以及更广泛的自适应优化是除Java(.Net,Lua,JRuby)之外的许多语言中众所周知的概念. 为了解释什么是JIT编译器,我想先定义一个编译器概念. 根 ...

  4. javac参数 编译警告关闭_JVM之JIT即时编译

    当今Java语言被广为接受的优点之一就有即时编译,即时编译的存在使得Java应用可以运行时间的增长而获得更高的性能. 如果有对jvm做过研究的朋友,一定听说过这样一段话:由于即时编译技术的进步,尤其是 ...

  5. java 及时编译_Java 面试-即时编译( JIT )

    当我们在写代码时,一个方法内部的行数自然是越少越好,这样逻辑清晰.方便阅读,其实好处远不止如此,通过即时编译,甚至可以提高执行时的性能,今天就让我们好好来了解一下其中的原理. 简介 当 JVM 的初始 ...

  6. (三)JVM成神路之全面详解执行引擎子系统与JIT即时编译原理

    引言 执行引擎子系统是JVM的重要组成部分之一,在JVM系列的开篇曾提到:JVM是一个架构在平台上的平台,虚拟机是一个相似于"物理机"的概念,与物理机一样,都具备代码执行的能力.但 ...

  7. JVM(1)之JVM的组成详解(字符串常量池+双亲委派机制+JIT即时编译......)

    以下总结自:<深入理解java虚拟机> + 宋红康老师视频 字节码文件介绍:深入理解JVM之Java字节码(.class)文件详解_Windy_729的博客-CSDN博客_字节码文件 JV ...

  8. 深入了解PHP8 JIT(即时编译)功能

    (Just-In-Time)即时编译器是PHP 8.0中最重要的新功能之一.JIT可以通过将PHP应用程序的全部或经常调用的部分作为CPU机器代码编译并存储并直接执行,从而绕过Zend VM及其过程开 ...

  9. JVM 工作原理和即时编译(JIT)

    目录 1.什么是虚拟机? 2.JVM 虚拟机简介 3.JVM 的工作原理 4.什么是即时编译(JIT)? 5.解释型语言和编译型语言的区别 6.为什么说 Java 是一种半编译半解释的语言? 1.什么 ...

最新文章

  1. matlab中help所有函数功能的英文翻译
  2. mvc存储Cookie和读取Cookie方法
  3. Android 全局悬浮按钮,悬浮按钮点击事件
  4. java低层源码_Java线程池及其底层源码实现分析
  5. 【虚拟化生态平台】虚拟化平台搭建
  6. 汕头大学计算机转专业,2021年汕头大学大一新生转专业及入学考试相关规定
  7. 天线口径与传输速度_如何使用口径将任何电子书传输到Kindle
  8. Android 构建简单app 步骤
  9. “好好说话,别伤人。”
  10. 手机QQ文件存储位置
  11. jacoco—增量代码覆盖率实现
  12. visio流程图工具安装包的下载和安装教程
  13. Charindex、Patindex、Convert函数
  14. vs2019 加载.obj文件报错找不到403 IIS 3D可视化.obj/.mtl文件找不到
  15. python3的变量和数据类型
  16. IDF实验室 聪明的小羊
  17. VVIC-API接口:item_search_img - 按图搜索商品
  18. JFreeChart在Struts2中实现饼状图统计
  19. 环境感知与规划专题(十一)——状态栅格规划器(State Lattice Planner)
  20. 洛谷P4363 [九省联考2018]一双木棋chess

热门文章

  1. 视频教程-Bootstrap3从基础到案例实战,完美实现响应式网站案例-Bootstrap
  2. 蚂蚁集团三项技术方案入选“2021年信息技术应用创新典型解决方案”
  3. 射频测试 —— 蓝牙定频测试1
  4. debian下cron的使用方法和常见问题
  5. javaScript(ES5)中想方设法继承家产的方式详解
  6. 股票类APP排名:同花顺第一、大智慧第二、东方财富网第三
  7. 阿里巴巴内推电话面试
  8. 电子学会2023年3月青少年软件编程(图形化)等级考试试卷(一级)真题,含答案解析
  9. 关于 K8s 集群中证书期限确认及续约的一些笔记
  10. 小米项目实习踩坑集合