art虚拟机介绍
Android 4.4提供了一种与Dalvik截然不同的运行环境ART(Android runtime)支持,ART源于google收购的Flexycore的公司。ART 的机制与 Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器(just in time ,JIT)转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动(首次)和执行都会变得更加快速。
虚拟机切换设置
Settings> Developer Options> Select Runtime
(设置>开发者选项>选择运行环境)
ART优点
- 系统性能的显著提升。
- 应用启动更快、运行更快、体验更流畅、触感反馈更及时。
- 更长的电池续航能力。
- 支持更低的硬件。
**ART缺点 **
- 更大的存储空间占用,可能会增加10%-20%。
- 更长的应用安装时间。
Dalvik虚拟机性能优化
- DEX代码安装时或第一次动态加载时odex化处理。
- Android2.3版本提供了JIT机制提升性能;
JIT(Just-In-Time),用来在运行时动态地将执行频率很高的dex字节码编译成本地机器码,然后再执行。通过JIT,就可以有效地提高Dalvik虚拟机的执行效率。但是,应用每次运行的时候,部分字节码都需要通过JIT转换为机器码,降低了应用程序运行效率。而ART则是使用AOT进行处理(Ahead-Of-Time),所谓AOT是指在运行以前就把中间代码静态编译成本地代码,这就减去了JIT运行时的转换时间,因此,即使Dalvik采用了JIT,Dalvik总体性能还是不能与直接执行本地机器码的ART虚拟机相比。
AOT的编译器分两种模式:
- 在开发机上编译预装应用;
C/C++开发应用程序的时候,编译器直接就把它们翻译成目标机器码。 - 在设备上编译新安装的应用;
在应用安装时将dex字节码翻译成本地机器码。