美文网首页
JIT即时编译原理

JIT即时编译原理

作者: 谭英智 | 来源:发表于2022-05-21 16:02 被阅读0次

JIT是什么

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

JIT即时编译则发生在运行时编译。

为什么使用JIT

代码需要先通过编译,生成机器代码,才可以在机器中执行。

而编译根据编译优化的不同,会需要不同等级的时间来生成机器代码。

一般来说编译优化的程度越高,代码运行的效率会越高,而需要编译的时间也越长。

如果一个程序有100个函数,根据二八原理,有可能只有20个函数的运行时间占整个程序运行时间的大部分。

如果使用运行前编译,使用最高等级的编译优化来生成机器代码,会让编译时间变得非常长,而生成的大部分代码,可能只运行了很小一部分时间。这导致性价比不高。

使用JIT编译,可以解决上面的问题。

例如在运行前只通过低等级的编译优化,快速生成性能一般的机器代码,然后在运行时通过统计热点函数,然后再通过JIT,在运行时对热点函数进行高等级的编译优化,生成高性能的代码片段,然后后续程度再次调用此热点函数时,则使用高性能的函数代码来执行,达到提高程序性能的目的。

JIT的原理

机器代码维度理解函数调用

jit-code-memory

代码生成的机器代码是放置在内存中的,函数调用通过把下一条代码执行的代码的地址修改成函数在内存中的开始位置,来实现函数的调用。

JIT是怎么做的

jit-code-gen
  1. 函数发生调用
  2. 虚拟机发现函数代码未生成
  3. 虚拟机调用JIT生成机器代码
  4. 修改函数调用的地址
  5. 进入函数,进行函数的执行

相关文章

  • JIT即时编译原理

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

  • JIT(just-in-time) 即时编译

    JIT 简介 JIT 是 just in time 的缩写, 也就是即时编译编译器。使用即时编译器技术,能够加速 ...

  • 深入浅出 JIT 编译器

    JIT 简介 JIT 是 just in time 的缩写, 也就是即时编译编译器。使用即时编译器技术,能够加速 ...

  • JIT 即时编译的原理

    什么是 JIT 名如其特点,JIT —— just in time,即时编译。 什么?这就是你要告诉大家伙的?这不...

  • 深度探索JFR - JFR详细介绍与生产问题定位落地 - 3.

    本文基于 OpenJDK 11 3. 虚拟机相关 Event 3.3. JIT即时编译相关 JIT 即时编译可能会...

  • angular项目启动慢问题

    调试的时候用的都是JIT 即时 (just-in-time, JIT) 编译 在启动期间,Angular 的即时编...

  • 什么是JIT?怎么优化?

    什么是JIT JIT 是 just in time 的缩写, 也就是即时编译编译器。 在运行时 JIT 会把翻译过...

  • 即时编译(JIT)

    通常情况下,Java程序最初都是被编译为字节码,通过解释器进行解释执行,解释执行能够获得更好的启动时间。某些被频繁...

  • Dart 基础

    JIT 与 AOT Dart 是少数同时支持 JIT(Just In Time,即时编译)和 AOT(Ahead ...

  • ART、AOT、JIT、Dalvik之间的关系

    JIT与Dalvik JIT是"Just In Time Compiler"的缩写,就是"即时编译技术",与Dal...

网友评论

      本文标题:JIT即时编译原理

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