简述
从Android 2.1版本到现在的Android 11 , 中间虚拟机变化过三次 :
版本 虚拟机类型 特性
2.1-4.4 Dalvik JIT+解释器
5.0-7.0 ART AOT
7.0...image.png
各个版本dexopt产物的区别
5.0以下
使用Dalvik虚拟机 , 生成odex文件 ....加载时会触发dexopt , 导致Multidex加载的时候会非常慢
由于热点代码的Monitor一直在运行 , 解释器解释的字节码会带来CPU和时间的消耗, 会带来电量的损耗
5.0 - 7.0
使用ART虚拟机..., 但是在7.0之上 , 增加了.vdex与.art机制 , 在ART虚拟机再次启动/升级 , 加载Dex/Oat文件时 , 会减少Dex的校验时间 , 提升加载与运行效率
9.0
在ART虚拟机的基础上...时会校验Dex 文件各个section的合法性,这时候使用的compiler filter 为了照顾安装速度等方面,并没有采用全量编译,当app启动后,运行一段时间后,收集了足够多的jit 热点方法信息,Android