【Android】一篇文章带你了解 Android的 JIT 、AOT、Dalvik、ART ,不再傻傻分不清

为了解释以上概念,我们得从Android 编译过程说起。

     我们使用Java开发android,在编译打包APK文件时,会经过以下流程:

    Java编译器将应用中所有Java文件编译为class文件,dx工具将应用编译输出的类文件转换为Dalvik字节码,即dex文件之后经过签名、对齐等操作变为APK文件。

科普了概念之后,要开始聊一聊编译打包的前世今生。

   在apk运行在手机上的时候,JAVA虚拟机需要将dex文件转换成机器能识别的的机器码,如果每次执行一段代码都执行这个过程,将dex转换成机器能识别的语言的过程(微处理器指令),然后交给系统处理,这样的效率不是很高。
为了解决这个问题,Google在2.2版本添加了JIT编译器,当App运行时,每当遇到一个新类,JIT编译器就会对这个类进行编译,经过编译后的代码,会被优化成相当精简的原生型指令码(即native code),这样在下次执行到相同逻辑的时候,速度就会更快。

   那么什么是JIT呢?JIT是"Just In Time Compiler"的缩写,就是"即时编译技术",与Dalvik虚拟机相关。当然,如果你的“这段代码”被重复执行的次数非常少,那么JIT的效果会不太明显。

   有一点需要注意,那就是dex字节码翻译成本地机器码是发生在应用程序的运行过程中的,并且应用程序每一次重新运行的时候,都要做重做这个翻译工作,所以这个工作并不是一劳永逸,每次重新打开App,运行代码的时候,都需要JIT编译。

   JIT是在2.2版本提出的

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值