美文网首页
浅谈 JIT-动态编译 与 AOT-静态编译

浅谈 JIT-动态编译 与 AOT-静态编译

作者: a_pioneer | 来源:发表于2023-05-09 23:36 被阅读0次

JIT

在运行时将源码/中间字节码编译成可执行的二进制码。即边编译边运行。

AOT

提前将代码编译成可执行的二进制码。即先编译后运行。

特性

动态性

  • JIT 能够自己生成新的源码,热重载替换原码。根据代码执行的热度优化生成更高效的二进制代码等。
  • AOT 无法做到

平台无关

动态性 平台 内存 性能
JIT 能够自己生成新的源码,热重载替换原码。根据代码执行的热度优化生成更高效的二进制代码等,能够实现渐进升级 平台无关 开销多,编译带来额外花销 慢启动,随着优化性能不断提高。但这也导致了性能波动的不稳定性。
AOT 不具备动态性,app升级需重新编译 平台相关 开销少 启动快,性能稳定,但无法得到进一步优化

总结

两者的总体性能差别不大,甚至JIT有些时候能超过AOT。但是JIT的性能波动导致了有些应用不适合使用。两者都不能解决所有需求,有时候还需要作为互补。

相关文章

  • JIT 和 AOT

    程序主要有两种运行方式:静态编译 与 动态解释 AOT (静态编译) 静态编译的程序在执行前程序会被提前编译为机器...

  • 改善Java程序建议17

    建议 17: 慎用动态编译。 关于动态编译的代码: 只要静态编译能做的事情,动态编译就能实现。 动态编译时,需要注...

  • 动态代理反射

    动态代理 分类AspectJ编译-静态编译-AspectJ编译编译器JDK动态代理-接口cglib动态代理-子类(...

  • 静态编译和动态编译

    静态编译与动态编译的区别: 静态编译就是在编译时,把所有模块都编译进可执行文件里,当启动这个可执行文件时,所有模块...

  • java反射

    java编译与运行 编译:静态加载 如 new创建对象运行:动态加载 如 Class.forName()(得到...

  • Android 系统 overlay 机制重点小结

    静态 overlay 和动态 overlay 静态 overlay:又称为编译时 overlay,编译时资源就已经...

  • kotlin的基础描述

    动态语言和静态语言动态语言即运行前不需要编译,在运行的时候边解释边运行。静态编译语言是在运行前需要编译,编译完成后...

  • 安卓系统编译overlay机制

    静态overlay和动态overlay 静态 overlay:又称为编译时 overlay,编译时资源就已经覆盖了...

  • gcc_clang的使用_day93

    编译命令 编译流程 预编译 编译 链接, 动态链接/静态链接 编写文件 add.c clang -g -c ad...

  • 反射

    动态编译与静态编译 反射 一个注意的地方Java中集合的泛型,是防止错误输入的,只在编译阶段有效,绕过编译到了运行...

网友评论

      本文标题:浅谈 JIT-动态编译 与 AOT-静态编译

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