ART和DVM

##### 1、简介
- Dalvik(DVM)是一个基于JIT(Just in time)编译的引擎。使用DVM存在一些缺点,所以从Android 4.4(Kitkat)开始引入了ART作为运行时,从Android 5.0(Lollipop)开始ART就全面取代了DVM。Android 7.0 向ART中添加了一个just-in-time(JIT)编译器,这样就可以在应用运行时持续的提高其性能。
- 注意:Dalvik(DVM)使用JIT(Just in time)编译,而ART使用AOT(Ahead of time)编译。

##### (1)Just In Time (JIT)
- 使用DVM JIT编译器,每次应用在运行时,它实时的将一部分DVM字节码翻译成机器码。在程序的执行过程中,更多的代码被被编译并缓存。由于JIT只翻译一部分代码,它消耗的更少的内存,占用的更少的物理存储空间。

##### (2)Ahead Of Time(AOT)
- ART内置了一个Ahead-of-Time编译器。在应用的安装期间,他就将DEX字节码翻译成机器码并存储在设备的存储器上。这个过程只在将应用安装到设备上时发生。由于不再需要JIT编译,代码的执行速度要快得多。

#### 2、Java代码如何执行
- 为了使代码和平台无关,JAVA开发了JVM,即Java虚拟机。它为每一个平台开发一个JVM,也就意味着JVM是和平台相关的。Java编译器将.java文件转换成.class文件,也就是字节码。最终将字节码提供给JVM,由JVM将它转换成机器码。

#### 3、Android代码如何执行
- 在Android中,Java类被转换成DEX字节码。DEX字节码通过ART或者DVM转换成机器码。这里DEX字节码和设备架构无关。
- DVM是一个基于JIT(Just in time)编译的引擎。使用DVM存在一些缺点,所以从Android 4.4(Kitkat)开始引入了ART作为运行时,从Android 5.0(Lollipop)DVM。Android 7.0 向ART 中添加了一个 just-in-time(JIT)编译器,这样就可以在应用运行时持续的提高其性能。

#### 4、ART的优点和缺点
##### (1)优点
- 应用运行更快,因为DEX字节码的翻译在应用安装是就已经完成。
- 减少应用的启动时间,因为直接执行的是native代码。
- 提高设备的续航能力,因为节约了用于一行一行解释字节码所需要的电池。
- 改善的垃圾回收器
- 改善的开发者工具

##### (2)缺点
- 应用安装需要更长的时间,因为DEX字节码需要在安装时就翻译成机器码。
- 由于在安装时时生成的native机器码是存储在内部存储器上,所以需要更多的内部存储空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值