Dalvik VM与ART(Android Runtime):对最终用户有影响吗?


22

有了Nexus 5(Android 4.4 KitKat),Google交付了两个运行时来运行应用程序。

在Android 4.4 KitKat中选择运行时选项 Android 4.4 KitKat中的Dalvik和ART Runtimes

Dalvik和ART对于最终用户有什么区别?最终用户如何受到此影响?我应该选择新的ART运行时有什么特定原因吗?


3
您必须启用并搜索“ 开发人员”选项才能找到此设置,这实际上表明它不适合最终用户。
Dan Hulme

1
@DanHulme不错,但是非开发人员仍然喜欢使用开发人员选项,他们甚至多次将其用于积极的非开发目的。
Android Quesito

就您的体验而言,您只会注意到电池电量已被大量节省,但是,从Dalvik切换到ART时,您将看不到速度差异。
拉胡尔·雷纳

Answers:


26

Dalvik VM(虚拟机)是Google的Java VM版本(在其上运行应用程序)。VM使应用程序与实际硬件和其他应用程序隔离并独立。但是,为此,Dalvik需要将所谓的字节码(为虚拟机设计)转换为本机代码。为了最小化字节码到本机代码转换引入的性能损失,执行了一个称为即时(JIT)编译的过程,该过程将热的(即经常使用的)字节码转换为本机代码。1个

ART(Android Runtime)是使用提前(AOT)编译的Dalvik的替代,这意味着您的应用程序在启动之前就已编译为可以运行的状态。通常,这是在安装应用程序时完成的,这使得启动和使用它们的过程变得更快,更流畅。由于这意味着编译仅执行一次,因此您可能还会看到更长的电池寿命。

如果ART在性能和电池寿命方面更好,我应该开始使用它吗?

否。如果这样做,则可能会破坏第三方应用程序。Google随Android 4.4一起发布了此ART预览,供开发人员在其上测试其应用。

旁注: Google使用ART的方法是击败iOS(iOS应用是本机,因此即使在低端硬件规格上也表现更好),但我不知道它的发展方向...另一个碎片?看到OEM可以自由使用其中一个或两个来构建设备。虽然最终版本不应该影响大多数应用程序,但并不是100%跨平台的。

1请注意,JIT已在Android 2.2中添加到Dalvik


3
也许有两个事实值得注意:ART的AOT导致应用程序使用的存储空间比DEX多20.25%。在我读过的Nexus-5上进行的Plus测试并未显示出主观速度或电池续航力方面的任何差异。考虑到KitKat中的ART只是开发人员的预览和兼容性检查(例如WhatsApp失败),两者肯定会有所改善。因此,我赞同Sachin的结论:这对最终用户来说还不好。
伊兹

2
极好的答案。我可以自由地进行一些改进。但我不同意最后一段:ART不会增加碎片化:如果ART被认为已准备好投入生产,则无论您的应用程序是由Dalvik还是ART运行的都没有关系,两者都使用相同的.dex格式作为起点。只有该ART才能AOT将.dex编译为本地代码。
流程
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.