AICon全球人工智能与机器学习技术大会8折特惠,购票立减¥960! 了解详情
写点什么

Android N 混合使用 AOT 编译,解释和 JIT 三种运行时

2016 年 4 月 08 日

Android N 引入了一种包含编译、解释和 JIT(Just In Time)的混合运行时,以便在安装时间、内存占用、电池消耗和性能之间获得最好的折衷。

ART 是在 Android KitKat(译者注:Android 4.0)引入并在 Lollipop(译者注:Android 5.0)中设为默认解决方案的主要特性之一,是当时的一种新的运行时。ART 取代了 Dalvik,但是前者与后者仍然保持了字节码级的兼容,因为前者仍在运行 DEX 文件。ART 的主要特征之一就是安装时对应用的 AOT 编译。这种方式的主要优点就是优化产生的本地代码性能更好,执行起来需要更少的电量。劣势在于安装文件所需的空间和时间。在 Lollipop 和 Marshmallow(译者注:Android 6.0)中,大的应用需要数分钟才能安装完。

Android N 开发者预览版包含了一个混合模式的运行时。应用在安装时不做编译,而是解释字节码,所以可以快速启动。ART 中有一种新的、更快的解释器,通过一种新的 JIT 完成,但是这种 JIT 的信息不是持久化的。取而代之的是,代码在执行期间被分析,分析结果保存起来。然后,当设备空转和充电的时候,ART 会执行针对“热代码”进行的基于分析的编译,其他代码不做编译。为了得到更优的代码,ART 采用了几种技巧包括深度内联。

对同一个应用可以编译数次,或者找到变“热”的代码路径或者对已经编译的代码进行新的优化,这取决于分析器在随后的执行中的分析数据。这个步骤仍被简称为 AOT,可以理解为“全时段的编译”(All-Of-the-Time compilation)。

这种混合使用 AOT、解释、JIT 的策略的全部优点如下。

  • 即使是大应用,安装时间也能缩短到几秒
  • 系统升级能更快地安装,因为不再需要优化这一步
  • 应用的内存占用更小,有些情况下可以降低 50%
  • 改善了性能
  • 更低的电池消耗

如果您想了解关于编译时优化的更多细节,我们推荐播客 Episode 45: State of the ART ,其中邀请了两位嘉宾——Android ART 团队的 leader Brian Carlstrom 和 Android 平台的工程总监 Anwar Ghuloum。

查看英文原文: Android N Combines AOT, Interpretation and JIT

2016 年 4 月 08 日 19:0010328
用户头像
丁涛 越努力,越幸运

发布了 35 篇内容, 共 80596 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

重读《重构2》- 改变函数声明

顿晓

重构 4月日更

云原生技术及可观测实践

滴滴云

曾国藩:人生惟有常是第一美德

leoay

曾国藩 坚持 有常 天赋 成事心法

聊聊十种常见的软件架构模式

架构精进之路

4月日更

《彩食鲜 CTO 乔新亮:程序员如何从技术走向管理》(采访提纲)

硬核编程

浅析“分布式锁”的实现方式丨C++后端开发丨底层原理

Linux服务器开发

redis zookeeper 分布式锁 Linux服务器开发 C++后端开发

区块链技术重新定义 物联网的物与物之间的交易

CECBC区块链专委会

发展空间

Coinbase上市,对加密市场将带来哪些影响?

CECBC区块链专委会

货币

金融科技数据链的DNA

博睿数据

金融科技 博睿数据 数据链DNA

交易所合约跟单软件搭建,火币合约跟单平台开发

13823153121

融云 CTO 杨攀:技术人员如何创业?

Yano

一个极简的冲突管理工具

石云升

28天写作 职场经验 管理经验 4月日更 冲突管理

Java该怎么学?阿里大佬呕心沥血之作,Java全线成长宝典,从P5到P8一应俱全

Java架构师迁哥

函数计算助力高德地图平稳支撑亿级流量高峰

阿里巴巴中间件

你管这破玩意叫哨兵?

云流

Java 数据库 redis 程序员 架构

怎么拥有个人磁力

leoay

IP 个人磁力 KOL 思想 吸引力法则

不愧是阿里内部“Spring Cloud Alibaba学习笔记”这细节讲解,神了!

Java架构追梦

Java 阿里巴巴 架构 微服务 SpringCloud

图查询语言的历史回顾短文

Nebula Graph

数据库 数据库设计 图数据库

勇夺桂冠!百度智能云获山东电力输电人工智能技术竞赛第一名

百度大脑

百度智能云

2年进入苏宁,第5年入职阿里,专科学历的他是如何做到?

Java架构师迁哥

Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外

阿里巴巴云原生

微服务 开发者 云原生 dubbo 中间件

汽车之家基于 Flink 的数据传输平台的设计与实践

Apache Flink

flink

中国数字人民币试点有序扩大至“10+1” 拜登政府正加强研究数字人民币计划

CECBC区块链专委会

数字货币

云存储中不可不知的五个安全问题及应对措施

浪潮云

云计算

不想搞Java了,4年经验去面试10分钟结束,现在Java面试为何这么难

云流

Java 编程 程序员 面试 计算机

Java开发9年经验,三轮技术面+HR面试成功砍下阿里巴巴Offer!

Java架构追梦

Java 阿里巴巴 架构 面试经历 面试题总结

函数计算助力语雀构建稳定且安全的业务架构

阿里巴巴中间件

文档 企业架构和云服务 业务架构

【科创人】贝锐创始人陈宇晔:花生壳诞生自一次挫折,15年坚守有温度不作恶

科创人

TcaplusDB直播回顾 | 数据库架构和实战分析

TcaplusDB

数据库 nosql 后端 TcaplusDB

阿里内部热捧“Spring全线笔记”,不止是全家桶,太完整了

Java架构追梦

Java spring 源码 架构 微服务

1分钟搞定 Nginx 版本的平滑升级与回滚

民工哥

nginx linux运维 后端技术

Android N混合使用AOT编译,解释和JIT三种运行时-InfoQ