|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
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)目前正处于开发过 程中。 全新运行时始终处于谷歌开发的前沿,其功能会得到进一步的扩展和升级。 |
|