【问题标题】:What is ART and DART in Android什么是 Android 中的 ART 和 DART
【发布时间】:2015-08-08 03:52:00
【问题描述】:

简单来说什么是 ART(Android 运行时)和 Android 中的 DART,我在 here 读到过它,但我并不真正了解它的重要性和用法。

在我询问之前,我还在 Stackoverflow 中搜索了任何相关问题。

【问题讨论】:

  • 据我所知,它们类似于 JVM。他们阅读并将代码转换为可执行格式。我认为 Dalvik 是前棒棒糖 (5)。
  • @Script47 我认为 ART 是除了 Dalvik 之外的一个新的 Android 运行时,ART 更快并且在 Android Dalvik VM 中使用 AOT 而不是 JIT 但我需要了解更多信息,我发现了一个重要的链接:infinum.co/the-capsized-eight/articles/…
  • 当您说“Dart”时,您指的是新的编程语言吗?如果是这样的话,我会向你展示一个关于这种语言的有趣链接与 android 应用程序arstechnica.com/gadgets/2015/05/…
  • @Marzouk 在 ART 上的相关 Google IO 视频:youtu.be/EBlTzQsUoOw 此外,DART 是一种针对网络的语言 - 在 Dart 上相关的 Google IO 视频:youtu.be/bsGgfUreyZw

标签: android dalvik android-runtime


【解决方案1】:

艺术

ART 是新的 Android 运行时。这个想法是用一个名为 dex2oat 的提前设备上编译器套件和一个新的应用程序运行时环境来替换 Dalvik 虚拟机。因此,如果您安装一个应用程序,它首先使用 dex2oat 编译器之一编译为本机代码,例如 Quick(5.0、5.1 中的默认值)或 Optimizing(6.0 中的默认值),并存储在一个所谓的 oat 文件,它是一个 ELF 共享对象。 执行应用程序时,运行时会将 oat 文件的内容加载到预初始化的应用程序进程中。 AOT 编译的优势在于,您可以进行最先进的优化,因为它不会在运行时执行。所以我们得到更快的应用程序但更慢的安装时间。

飞镖

当您提供指向 Android 开发页面的链接时,我假设您不是在谈论 DART 语言,而是在谈论 Dalvik 运行时。
Dalvik 是 Android 的字节码解释器(和 JIT 编译器),用于在执行时动态解释和优化应用程序代码。因此,与 AOT 编译相比,可以完成的优化量受限于较长的优化时间会减慢应用程序的实际执行速度这一事实。 Dalvik 在 Android 5 中被 ART 取代。不过,应用程序的代码仍以 dex 文件的形式存储,这是 ART 编译器的输入格式。此外,出于调试目的和持久内存较低的设备,解释器仍然存在,即使它不是默认的并且它可能是更轻的版本。

【讨论】:

  • 实际上,即使在指示dex2oat 编译everything(这不是默认选项)时,某些代码仍保留为字节码格式以进行解释,例如类初始化程序。默认选项留下额外的代码来解释,比如很少使用的函数。
  • 实际上,我最近发现使用Optimizing 后端和编译器过滤器everything 还包括类初始值设定项。我猜您特别在谈论Quick 后端?反正我猜还是有没有编译成本地代码的代码片段。
  • 是的,它应该是Android M 上的Quick 后端!
  • 其实这很奇怪,因为 M 默认使用 Optimizing,可能是在极少数情况下似乎会发生的后备...
猜你喜欢
  • 2016-06-10
  • 2015-11-04
  • 2020-12-31
  • 1970-01-01
  • 2019-10-06
  • 2020-03-09
  • 2020-05-20
  • 2019-05-30
  • 2020-12-02
相关资源
最近更新 更多