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虚拟机演变过程.
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新的优化等.