1)JIT编译

以最新的java JIT为例, JIT编译器默认情况下处于启用状态,并在调用Java方法时被激活。

JIT编译器将需要执行的方法(或代码片段)的字节码,做一个count计数,如果被调用的count计数超过了一个阈值,则解释器会把这个方法(或代码片段)的字节码编译为本地机器代码,顺手缓存并添加索引,完后直接交给cpu运行。编译并索引了该方法(或代码片段)后,JVM下次执行它的时候会直接找到并调用该方法已编译的本地机器代码,而不是对其进行逐行解释为本地机器码再一一交给cpu执行了。

注意到JIT中涉及到的统计,编译和缓存都是在程序运行时进行的,所以该编译被称作为just in time编译。

那么能不能把这些都放在程序运行之前,来进一步提升执行效率呢? 答案是肯定的。

2)AOT编译

java9就已经开始支持AOT编译了,你只需要把一个字节码文件把交给编译器,它就可以在执行之前编译成so文件,

在真正执行程序的时候,只需要把这个编译好的so文件配置成AOT库,就可以了。如下图:

随之而来的缺点也就出现了,那就是AOT之后的程序不再支持跨平台了,所以使用时还需要进行性能和兼容性的权衡才好。

JIT编译对比AOT编译(附图片)相关推荐

  1. java jit aot_JIT和AOT编译详解

    JIT和AOT编译介绍 JIT - Just-In-Time             实时编译,即时编译 通常所说的JIT的优势是Profile-Based Optimization,也就是边跑边优化 ...

  2. JIT编译和AOT编译

    JIT(just in time) 实时编译,即时编译. Profile-Based Optimization,边跑边优化,根据运行时信息然后随着时间的推移得到尽可能优化的代码,适用于开发调试. AO ...

  3. 前端编译、JIT编译、AOT编译

    一.前端编译: java设计之初就是强调跨平台,通过javac将源文件编译成于平台无关的class文件, 它定义了执行 Java 程序所需的所有信息(许多Java"语法糖",是在这 ...

  4. java aot jit xcomp,使用 AOT 编译

    什么是 tfcompile? tfcompile 是一个可将 TensorFlow 计算图提前 (AOT) 编译为可执行代码的独立工具.它可以缩减二进制文件的总大小,也可以避免一些运行时开销.tfco ...

  5. JIL 编译与 AOT 编译

    JIT:Just-in-time compilation,即时编译:AOT:Ahead-of-time compilation,事前编译. JVM即时编译(JIT) 1. 动态编译与静态编译 动态编译 ...

  6. JIT和AOT编译详解

    JIT和AOT编译介绍 JIT - Just-In-Time             实时编译,即时编译 通常所说的JIT的优势是Profile-Based Optimization,也就是边跑边优化 ...

  7. Java编译分类:前端编译和后端编译

    ava程序代码需要编译后才能在虚拟机中运行,编译涉及到非常多的知识层面:编译原理.语言规范.虚拟机规范.本地机器码优化等:了解编译过程有利于了解整个Java运行机制,不仅可以使得我们编写出更优秀的代码 ...

  8. android将引入aot编译器,Android N混合使用AOT编译,解释和JIT三种运行时

    Android N引入了我们一种主要包含编译.解释和JIT(Just In Time)的混合系统运行时,以便在安装工作时间.内存占用.电池材料消耗和性能指标之间可以获得发展最好的折衷. ART在And ...

  9. android将引入aot编译器,JIT与AOT编译模式

    JIT,即Just-in-time,动态(即时)编译,边运行边编译: AOT,Ahead Of Time,指运行前编译,是两种程序的编译方式 JIT ​ JIT,即"Just In Time ...

  10. java aot,Java三种编译方式: 前端编译 JIT编译 AOT编译

    java程序代码需要编译后才能在虚拟机中运行,编译涉及到非常多的知识层面:编译原理.语言规范.虚拟机规范.本地机器码优化等:了解编译过程有利于了解整个Java运行机制,不仅可以使得我们编写出更优秀的代 ...

最新文章

  1. CentOS 7 安装 PostgreSQL 教程
  2. Silverlight2.0中与Html页面元素互操作.
  3. Python Flask实现查询和添加数据
  4. 阿里云数据库产品专家胡航丽:数据库自动驾驶平台DAS重磅助力数据库领域智能未来...
  5. java数组移除对象_如何从Java数组中删除对象?
  6. leetcode-461-Hamming Distance
  7. linux系统文件系统个目录介绍,关于linux的文件系统目录详细介绍
  8. mac和jar的关系
  9. 【软考 系统架构设计师】案例分析① 解题技巧
  10. LowB三人组--插入排序原理和java实现
  11. Python 三维姿态估计+Unity3d 实现 3D 虚拟现实交互游戏
  12. Ubuntu系统上编译和安装perl和cpan模块
  13. 哈尔滨理工大学matlab,微软用户-Matlab软件简介哈尔滨理工大学数学建模组ppt课件...
  14. 爱莫科技升级KISS人工智能算法平台,更好赋能实体零售
  15. 正则表达式替换某个字符
  16. 定时器中断控制LED闪烁(每隔1s)---普中科技开发仪
  17. vue子组件通过.sync修饰符修改props属性
  18. python -- 计算 平方,乘方,平方根
  19. 想要提高数据分析能力,就要注意以下四点
  20. Halo博客网站添加天气插件

热门文章

  1. [环境搭建]Windows下安装Ruby和Jekyll
  2. java带参数的方法笔记_Java学习笔记十一:Java中的方法
  3. CF1399A Remove Smallest
  4. AGC022E Median Replace
  5. rsync结合inotify工具实现实时同步传输文件
  6. linux命令行添加管理员用户,Linux基础命令---添加用户useradd
  7. python显示文字框_python如何使用文本框
  8. php通过mysqldump数据库备份,mysql使用mysqldump进行数据库备份_MySQL
  9. python里isalpha_Python 2.7中isalpha 不支持 unicode
  10. python中33个保留字的含义_Python的保留字。这是什么意思?