ART简介

Android虚拟机演化

下表是我了解到的Android虚拟机演变过程.

VM Runtime Android版本 说明
Dalvik Interpreter Android 2.2以前 慢, 卡顿
Dalvik Interpreter + JIT Android 2.x/4.x 性能有所提升,仍慢,卡顿且耗电
ART Interpreter + AOT(Quick) Android 5.x 性能大幅提升,但安装更新慢/占用存储多
ART Interpreter + AOT(Quick + Optimizing) Android 6.x 性能继续提升,仍安装/更新慢/占用存储多
ART Hybrid: Interpreter + JIT + AOT(Optimizing) Android 7.x 兼顾性能和用户体验
ART Hybrid: Interpreter + JIT + AOT(Optimizing) Android 8.x 兼顾性能和用户体验

从中可看到:

  • Android 5.0开始,ART正式取代Dalvik, AOT vs. JIT, 性能提升不少.但Quick compiler本质就是沿用Dalvik中的JIT compiler.
  • Android 6.0开始,Optimizing compiler正式启用,同时在Android 7.0后移除Quick.
  • Android 7.0开始,引入混合编译,即引入Dalvik中的JIT技术, 在牺牲部分性能条件下改善用户体验,减少内存和存储占用.
  • Android 8.0基本是对7.0的强化,如更换新的GC, compiler新的优化等.

ART相关目标文件

子目录 目标文件 说明
art/dex2oat dex2oat 将dex编译为oat文件
art/runtime libart.so ART运行时
art/compiler libart-compiler.so ART编译器相关
art/patchoat patchoat 重定位image文件等
art/dalvikvm dalvikvm 执行虚拟机程序
art/oatdump oatdump dump oat文件
art/disassembler libart-disassembler.so 反汇编oat文件
dalvik/dexdump dexdump dump dex文件
art/dexdump dexdump2 dump dex文件
art/profman profman dump profile文件
art/sigchainlib libsigchain.a, libsigchain.so 用于runtime的FaultManager

你可能感兴趣的:(ART简介)