当前位置: 首页 > 工具软件 > Dalvik > 使用案例 >

Dalvik和ART

傅和璧
2023-12-01

什么是Dalvik

        Dalvik是适用于Android平台的java虚拟机,支持.dex格式的java应用程序运行。

什么是ART

         Android Runtime,Android4.4提供的一种与Dalvik完全不同的运行时环境,在5.0以及以上的版本默认是ART环境。在应用安装的时候,预编译字节码到机器码,这种机制叫做AOT(Ahead Of Time),应用安装会变慢,但是运行效率会更高。

         ART可以兼容Dalvik虚拟机。.dex文件经过AOT编译之后,产生的文件是.aot文件,ART如果在运行时加载.dex文件,走的流程跟Dalvik一样的流程,如果是热点代码也会通过JIT编译成机器码。

dexopt和dex2oat

         dexopt对dex进行验证和优化成odx(Optimized dex)文件

         dex2oat在安装的时候,将dex文件执行dexopt优化之后,在将odex执行AOP编译成AOT可执行的文件(机器码)。

Dalvik和ART的区别

  1. Dalvik在运行时,需要解释执行,常用的热点代码会通过JIT(Just In Time),将字节码编译成机械码。而ART环境是在应用安装的时候,字节码预编译成机器码,运行时更高效

注意:为啥在应用安装的时候,才预编译成机器码,而不是在apk编译的时候呢?

           主要的原因是安卓不同的CPU架构,比如arm64-v8a,armeabi-v7a,编译成机器码之后不能跨平台。

  1. ART占用的空间比Dalvik占用空间大,因为是预编译成机器码,空间换时间
  2. 预编译减少程序反复编译,减少CPU的使用,降低电量的消耗。
 类似资料: