点击打开链接

刚刚结束的 Google I/O 大会上,Android 下一代操作系统「L」带来不少惊喜。新系统运行更快、更省电。

然而开发者对这个新系统也有颇多疑问,比如新的运行模式 ART 对开发者意味着什么?ART 模式能否让应用的体验超越苹果?我认为在 ART 运行方式下「L」的性能提升在 15% 到 80% 之间。同时,ART 优化了垃圾回收方式,执行效率比现行的 Dalvik 提高 50% 以上,减少了执行垃圾回收时对应用带来的卡顿,使应用运行更流畅。

而在安全性方面,ART 和 Dalvik 相比,安全模型和基本机制没有变化。但 ART 有一些细节改进,对安全有帮助。比如,安装时对 dex 文件做了更严格的验证。

以下我汇集整理了 360 论坛上开发者提问最多的 6 个问题,一并解答,希望可以帮助开发者更好地认识这个全新的系统。

问题 1. 为什么 ART 能提高性能?

答:主要来自两方面。

预先(Ahead-of-time)编译。Android 应用开发时,生成的 Dex 文件包含 Java 的 Byte Code。在 Android L 以前,默认用 Dalvik 虚拟机。应用运行时,Dalvik 对 Java Byte Code 进行解释执行,或进行 Junt-In-Time 的编译。在 Android L 里,应用安装时,用系统工具 dex2oat 将安装包中的 Dex 文件编译为 ELF 格式的执行文件(.oat 文件)。应用运行时直接执行二进制指令。

优化垃圾回收(garbage collection)。垃圾回收主要有两种:(1)gcconcurrent。执行时,Dalvik 会在本次 gc 的开始和结束时会短时间暂停代码的执行。(2)gcforalloc。执行时,会较长时间中断 Java 代码的运行。在 ART 里,执行 gcconcurrent 时,只会暂停代码一次。执行 gcforalloc 时,中断 Java 代码运行的时间大大缩小了。总体上讲,ART 里垃圾回收占用的开销比 Dalvik 少 50% 以上。减少了垃圾回收时对应用带来的卡顿,使应用运行更流畅。

问题 2. 对应用开发者来说,需要做什么适配工作以支持 ART。比如重新编译、打包?

答:对绝大多数开发者来说,不需要。不论虚拟机是 Dalvik 还是 ART,安装包里所包含的仍然是 Dex 文件。由 Dex 文件编译为二进制文件的工作是在应用安装时,由装在设备上的系统工具 dex2oat 完成的。

问题 3. Android 的应用在 ART 里运行后,开发者还能在 Java 层面进行调试吗?

答:可以。事实上,应用安装后,编译生成的.oat 文件中,包含了原始的 Dex 文件。保留 Dex 文件有两个原因:

需要 Dex 里的关于类的信息,以支持 Java 反射等操作。

调试时,要用 Dex 里的调试信息。

正由于这个原因,编译生成的.oat 文件,大小是原始的 Dex 文件的两倍以上。

问题 4. 用 ART 后,性能最终能提高多少?

答:取决于具体的应用。在 Google I/O 上,Google 给的例子是提升两倍以上。

ART 我们实际测试下来,性能提升在 15% 到 80% 之间。对于大量使用 CPU 的应用,性能提升比较明显。但如果应用程序的时间主要花在调用系统 API,提升会小一些。因为很多系统 API 的代码主要在底层的.so 里面。

问题 5. ART 在安全性上有没有提升?

答:ART 和 Dalvik 相比,安全模型和基本机制没有变化。但 ART 有一些细节改进,对安全有帮助。比如:

安装时对 dex 文件做了更严格的验证。

纠正了 Dalvik 长期存在的一个对象模型的问题:一个类里的方法,如果没有加访问限制(即没有用 Public,Private,Protected 描述),Java 规定是 package-private 方法,不在同一 package 的子类不能访问和重载。而 Dalvik 一直允许子类重载 package-private 的方法。ART 里做了修改,行为与 Java 标准一致。

问题 6. Android L 使用 ART 后,有什么要引起注意的地方?

答:主要有这么几个:

因为安装时进行了预先编译。应用安装的时间变长,安装后生成的文件变大。

如果以 DexClassLoader 的形式加载代码,第一次执行时间也会变长。

对应用最好进行兼容性测试。大多数应用无需修改,但如果应用程序本身对 Dex 文件做了处理,比如进行了加壳,可能有兼容性问题。

总体来说,Android L 十分值得我们期待,今年秋天 Google 将推出正式版本,不过鉴于目前 Android 系统碎片化的现状,当前大部分手机无法升级,只能购买新款手机。

极客观察均为极客公园原创报道,转载请注明原文链接。

Android L 使用ART能提高多少性能?相关推荐

  1. Android L系统 剖析安卓5.0安卓L新特性

    Android L系统全新发布了!在Google I/O 2014上,Google正式发布了最新一代安卓系统Android L,安卓系统终于告别了安卓4.×,迈入了全新的版本周期.新一代安卓系统此前一 ...

  2. android l android 5,关于Android L的5个有趣事实

    谷歌在一个月前的I/O大会上正式发布了新一代Android系统Android L.尽管正式版Android L目前尚未发布,不过开发者预览版Android L已经向人们清楚地展示出了新版Android ...

  3. android l art模式,Android ART模式简介

    Android4.4最大的变化就是引入ART模式来代替Dalvik虚拟机.ART是Android Runtime的缩写,它提供了以AOT(Ahead-Of-Time)的方式运行Android应用程序的 ...

  4. 开发者须知:关于 Android L 的一切

    Google在I/O 2014大会上发布了全新移动操作系统Android L的开发者预览版本,相对于上一版本来说,Android L在UI风格.界面切换.和原生应用等各方面都发生了比较大的变化,目前该 ...

  5. android 功能清单文件夹,全新Android L大小全部功能清单整理

    今天凌晨,谷歌在美国旧金山发布全新安卓系统 Android L,该系统预计今年秋季发布,在此之前先向开发者提供. 在凌晨的主题演讲中,谷歌表示全新安卓系统将为用户提供全新的使用体验,比如 Projec ...

  6. android l 新功能,Android L怎么样 安卓L新特性汇总

    在刚刚结束的2014谷歌IO大会上,谷歌共发布了8款新品,其中Android L成为发布会的一大看点.此次谷歌并没有将新安卓系统命名为Android 5.0,而是命名为Android L.仅从命名来看 ...

  7. (15.1.14)Google正式发布Android L系统 剖析安卓5.0安卓L新特性

    Material Design.卡片.环动式设计 ART.64位计算 升级.电池续航.安全 Android L系统全新发布了!在Google I/O 2014上,Google正式发布了最新一代安卓系统 ...

  8. android 6.0 大神f2,升级Android L 全网通版大神F2改变几何

    原标题:升级Android L 全网通版大神F2改变几何 大神F2是大神手机的一个经典系列,目前已经推出了移动版.联通版.全高清版和全网通版.相对于最早上市的移动版而言,大神F2全网通版则是一款在20 ...

  9. 最新android 电脑系统,android l操作系统|android l操作系统最新版 - 系统天堂

    Android新一代操作系统被称为"L",采用被称为"材料设计"的全新设计语言,这是谷歌为了解决碎片化问题的重要举措,将统一包括手机. 平板.笔记本以及网页端设 ...

最新文章

  1. NCEPU:线下组队学习周报(008)
  2. jd-gui的下载和使用
  3. 带你看懂LayoutInflater中inflate方法
  4. 【C/C++】lib 和 dll 的区别、生成以及使用详解
  5. sinaapp mysql连接_手把手教你在新浪云上免费部署自己的网站--连接数据库
  6. WPF中制作立体效果的文字或LOGO图形(续)
  7. 洛克人html5,《洛克人Zero/Zx合集》:跳票冷饭,与预期有差但依旧很香
  8. python有关迭代器和生成器的面试题_python面试题之生成器迭代器
  9. mysql表内容_5、mysql表内容操作
  10. 什么是DVD?DVD有些格式?
  11. execl2010数据有效性验证,保存后丢失问题
  12. 计算机基础知识--->对张海藩老师所著《软件工程》的这本书的一些知识总结
  13. 咱们的课程里,有微信的这种菜单示例吗?---酷课堂iOS交流群问答整理(201810期)...
  14. MUI 在同一页面中动态添加多个picker选择器
  15. ES6 --》字符串与数值新增方法
  16. POI 导入带公式的EXCEL 精度出问题
  17. 浅谈autolayout
  18. rancher 启动命令_Rancher 中文文档 —— 快速入门指南
  19. 影子系统详细内容最强大全
  20. arcgis区位图的制作——以武汉市为例

热门文章

  1. js变量后面加问号是什么_js没那么简单(1)-- 执行上下文
  2. 029_jdbc-mysql二进制数据
  3. 分布式的信息处理需要利用计算机的,计算机应用基础(离线作业1)
  4. worpress安装mysql连不上_wordpress安装时连接不上MySQL8.0(已解决)Windows
  5. 算术运算符举例java_Java的算术运算符简介
  6. odu oracle 价格_Oracle数据库ODU的几种恢复场景
  7. Lightroom Classic CC8.2安装教程 IT宝盒 10-14 20:32
  8. python固定数据类型_Python的数据类型
  9. java取geosever数据,终于搞定了GeoServer的WFS查询
  10. php str_replace 源码,PHP中str_replace函数的详解