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

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

评论

必须启用并搜索“开发人员”选项才能找到此设置的事实应该表明它不适合最终用户。

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

就用户体验而言,您只会注意到在很大程度上节省了电池电量,但是从Dalvik切换到ART时,您将看不到速度差异。

#1 楼

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中

评论


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

– Izzy♦
13年11月11日13:22

极好的答案。我可以自由地进行一些改进。但我不同意最后一段:ART不会增加碎片化:如果ART被认为已准备好投入生产,则无论您的应用程序是由Dalvik还是ART运行的都没有关系,两者都使用相同的.dex格式作为起点。只有该ART才能AOT将.dex编译为本地代码。

–流程
2013年12月2日20:19