我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1217|回复: 0

[移动软件开发] ART vs Dalvik* - 介绍全新的安卓* x86运行时

[复制链接]
  • TA的每日心情
    开心
    2024-10-7 21:17
  • 签到天数: 103 天

    [LV.6]常住居民II

    92

    主题

    1万

    回帖

    7万

    积分

    三级逆天

    积分
    73181

    终身成就奖特殊贡献奖原创先锋奖社区居民忠实会员社区劳模最爱沙发社区明星原创达人优秀斑竹奖宣传大使奖

    QQ
    发表于 2016-3-4 00:01:23 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    Android* 5.x 一项最显著的变化是迁移至新的应用执行方法,称为 Android 运行时 (ART)。 Android 4.4 (KitKat) 发布后,随即提供了 ART 选项。 KitKat 用户可以选择 使用 ART 或其前任 Dalvik。 现在,ART 是 Android Lollipop 中唯一的运行时环境。

    运行相同 Dex 字节代码时,ART 和 Dalvik 能够兼容,因此针对 Dalvik 开发的应用 基于 ART 运行的时候也可有良好表现。 本文将介绍 ART 的不同之处

    让我们来看看 ART 的主要特性。

    提前编译

    ART 与 Dalvik 之间的主要区别是其具有提前 (AOT) 编译模式。 根据 AOT 概念,设 备安装应用时,DEX 字节代码转换仅进行一次。 相比于 Dalvik,这样可实现真正的优势 ,因为 Dalvik 的即时 (JIT) 编译方法需要在每次运行应用时都进行代码转换。 这里有 一篇文章能够为您提供更多关于 AOT 编译如何影响用户设备的性 能、电池续航时间、安装时间和存储空间的信息。

    垃圾回收

    ART 的另一项改进是内存管理。 垃圾回收 (GC) 对性能来说非常关键,因为它会影响 用户体验。 ART 的垃圾回收功能包含一些增强特性,要优于 Dalvik 的 GC。

    首先,全新的 GC 功能列举出所有分配的对象,而且只需暂停一次 就可标记所有可达对象,而 Dalvik 的 GC 需要暂停两次。

    其次,并行化标记-清除算法有利于显著缩短应用暂停时间。

    第三,在部分需要清理近期分配的短时对象的案例中,ART 缩短了总体 GC 时间。

    第四,ART 能够更加及时地执行并发 GC。 因此,如果内存堆已满,尝试分配内存时 ,应用无需关闭。

    关于内存管理的最后一个变化是紧凑型 GC 特性的出现。 有时出现 OutOfMemoryError 不是因为应用内存耗尽,而是没有大小合适的独立块来处理应用请求 。 针对这种错误,Android 开源项目 (AOSP) 正着手开发面向 ART 的紧凑型 GC。 紧凑 型 GC 能够合并释放在一个内存区的单个块,这样能够轻松分配。



    这种特性非常有用,但目前还处于开发阶段,有一定的局限性,尤其是针对带有 Java* 原生接口 (JNI) 的应用。 Android 建议开发人员避免实施非兼容操作,并更多地 关注指示器。 同时,最好使用 CheckJNI 捕捉潜在错误。

    开发和调试

    最后一项 ART 增强特性关于应用开发和调试。

    ART 增加了对专用取样分析器的支持。 过去,通常采用面向执行日志的图形查看器( 称为 TraceView)分析 Android 应用。 但使用这种工具会对运行时性能产生不利影响。 取样分析器测量操作系统中断。 因此,使用取样分析器对应用的干扰更少,还有许多相 比于其他方法的副作用。 这种添加至 TraceView 的全新专用分析器现在可提供准确的应 用行为图,同时应用继续以自然速度运行,不会出现明显的速度下降。

    而且,ART 支持一些全新的调试选项,比如监控锁定,计算部分类中的实时实例,设 置现场观测点以在出现特定事件时关闭应用,等等。

    可加速性能的 ART 还具备另一项功能改进,即异常和崩溃报告中的诊断详情更加清晰 明了。 最新版 Dalvik 针对 java.lang.ArrayIndexOutOfBoundsException 和 java.lang.ArrayStoreException 扩展了异常详情。 ART 可提供详细的 java.lang.ClassCastException、java.lang.ClassNotFoundException 和 java.lang.NullPointerException 信息。

    java.lang.NullPointerException: Attempt to write to field 'int android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object reference

    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference

    如欲了解更多信息,请参阅: 验证 Android 运行时 (ART) 上的应用运行情况。

    总结

    ART 实现了相对于 Dalvik 的显著改进,包括本文介绍的 AOT 编译、垃圾回收、开发 和调试改进,以及其他特性。 由于现代技术的支持,设备能够配备多核、大内存和存储 容量,从而满足 ART 要求。 而且,部分 ART 功能(比如紧凑型 GC)目前正处于开发过 程中。 全新运行时始终处于谷歌开发的前沿,其功能会得到进一步的扩展和升级。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    每日签到,有金币领取。


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表