当前位置: 首页 > article >正文

【jvm】AOT编译器

目录

          • 1. 说明
          • 2. AOT编译器的引入与基本概念
          • 3. AOT编译器的工作原理与流程
          • 4. 优点
          • 5. 缺点
          • 6. AOT编译器与JIT编译器的比较
            • 6.1 JIT编译器
            • 6.2 AOT编译器
          • 7.AOT编译器的应用场景与限制

1. 说明
  • 1.JVM(Java虚拟机)中的AOT(Ahead Of Time)编译器是一种静态提前编译器,它在程序运行之前将Java字节码转换为机器码。
2. AOT编译器的引入与基本概念
  • 1.引入:JDK9引入了AOT编译器及AOT编译工具jaotc。
  • 2.基本概念:AOT编译指的是在程序运行之前,便将字节码转换为机器码的过程。这与即时编译(JIT)相对立,JIT是在程序的运行过程中进行编译。
3. AOT编译器的工作原理与流程
  • 1.工作原理:AOT编译器借助Graal编译器(或其他底层编译器技术),将输入的Java类文件转换为机器码,并存放至生成的动态共享库之中。
  • 2.流程:Java源代码首先通过javac编译器编译成字节码(.class文件),然后使用jaotc工具将字节码转换为机器码(如.so文件)。
4. 优点
  • 1.JVM加载已经预编译成二进制库,可以直接执行,无需通过解释器执行,减少了Java应用“第一次运行慢”的不良体验。
  • 2.把编译的本地机器码保存到磁盘,不占用内存,并可多次使用。
5. 缺点
  • 1.破坏了Java“一次编译,到处运行”的特性。必须为每个不同的硬件和操作系统编译对应的发行包。
  • 2.降低了Java链接过程的动态性。加载的代码在编译工作前就必须全部已知。
6. AOT编译器与JIT编译器的比较
6.1 JIT编译器
  • 1.优点:可以根据当前硬件情况实时编译生成最优机器指令;可以根据当前程序的运行情况生成最优的机器指令序列;当程序需要支持动态链接时,只能使用JIT。
  • 2.缺点:编译需要占用运行时资源,会导致进程卡顿;对于某些代码的编译优化不能完全支持,需要在程序流畅和编译时间之间做权衡。
6.2 AOT编译器
  • 1.优点:在程序运行前编译,可以避免在运行时的编译性能消耗和内存消耗;可以在程序运行初期就达到最高性能;显著的加快程序的启动。
  • 2.缺点:在程序运行前编译会使程序安装的时间增加;牺牲Java的一致性;将提前编译的内容保存会占用更多的外部存储空间。
7.AOT编译器的应用场景与限制
  • 1.应用场景:AOT编译器适用于对启动速度有较高要求,且不需要频繁更新代码的应用场景。

  • 2.限制:由于AOT编译器需要为每个不同的硬件和操作系统编译对应的发行包,因此其灵活性和可移植性受到一定限制。


http://www.kler.cn/a/408196.html

相关文章:

  • git仓库推送到远端
  • window系统下使用open-webui+ollama部署大模型
  • LCR-003比特位计数
  • 电子电气架构 -- ASIL D安全实现策略
  • STM32ADC独立模式单通道采集实验
  • Creo 6.0 软件安装教程下载
  • 非线性控制器设计原理
  • c++应用网络编程之十五Nagle算法
  • flowable流程图详细绘制教程
  • 基于YOLOv8深度学习的智慧农业果园果树苹果类果实目标检测系统(PyQt5界面+数据集+训练代码)
  • shell脚本(6)
  • 【Rabbitmq篇】高级特性----TTL,死信队列,延迟队列
  • 美年健康集团发布“共建共享高质量职场健康管理宣言”,全面启动“高质量职场健康先行试点工作”
  • 【C++】类(四):类的作用域
  • 【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化
  • hhdb数据库介绍(10-4)
  • 《OpenCV 中阈值处理方法全解析及应用实例》
  • 【大数据学习 | Spark-Core】Spark的kryo序列化
  • java: itext 5.5 create pdf
  • HBU算法设计与分析 贪心算法