(2)7.0Android N之后对于ART进行改动,重新引入了JIT编译,结合使用AOT/JIT混合编译,主要机制如下:
- 安装时不进行任何编译,前几次运行仅通过解释器解释运行,同时对热点代码进行JIT编译,并将这些代码的相关信息记录在一个配置文件里
- 设备处于空闲和充电状态时,编译守护进程读取配置文件对热点代码进行AOT编译并写入到app对应的odex文件中
- 再次启动应用后优先使用AOT编译过的代码,否则使用解释器+JIT编译,重复这个过程
- 对于一些庞大的APP,比如某宝,有些功能可能你一辈子都不会用到,根据上述策略这部分代码就不会被编译保存,从而减少了存储空间的占用 。另外,在系统升级时也避免了全量编译所有现存应用造成的时间空间消耗 。
4、ART垃圾收集器优化
- 只有一次GC暂停(Dalvik需要两次) 。
- 并发复制,可减少后台内存使用和碎片 。
- GC暂停的时间不受堆大小影响 。
- 在清理最近分配的短时对象这种特殊情况中,回收器的总GC时间更短 。
- 优化了垃圾回收的工效,能够更加及时地进行并行垃圾回收,这使得GC_FOR_ALLOC事件在典型用例中极为罕见 。
- Android 4.4 ,ART和Dalvik是共存的,用户可以在两者之间进行选择 。
- Android 5.0,正式取代Dalvik虚拟机成为Android虚拟机运行环境,Dalvik退出历史舞台,AOT取代JIT 。
- Android 7.0,JIT回归,采用JIT和AOP混合编译模式 。
- ART持续更新优化
- ART早期使用AOT技术,后期使用AOT+JIT混合,而Dalvik使用JIT 。
- ART支持64位CPU并兼容32位CPU,而Dalvik只支持32位CPU 。
- ART对垃圾收集器进行了改进优化,提高了吞吐量 。
推荐阅读
- Android 14 DP1 新特性:平板电脑任务栏应用图标会显示名称
- wma文件用什么播放器?.wma格式的文件在android手机上用什么播放器可以打开?
- vmware删除虚拟机的几种方式 如何卸载vmware虚拟机
- 怎么看虚拟机是32位还是64位的 虚拟机64位系统
- 虚拟主机怎么使用,虚拟机登录地址及使用教程
- 安卓开发环境配置有哪些方法,android开发环境的搭建步骤
- 手机怎么录制屏幕,android手机屏幕录制方法
- Android中各种Exception错误小结
- 虚拟机中的Linux怎么配置上网 虚拟机上网设置
- 什么是虚拟机? windows虚机