为了活动小家电-Android JVM、DVM、ART(四)

49 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情

为了活动小家电,接着上篇搞!

ART是什么?

ART 或 Android 运行时是使用 Ahead Of Time (AOT) 的 Android 运行时。通过使用 AOT,它所做的是将整个高级语言代码转换或编译为机器级代码,并且在安装应用程序时而不是在应用程序运行时动态地(如 Dalvik 的情况)。通过在安装过程中编译整个代码,我们在设备上运行应用程序时不会看到任何延迟。通过这样做,编译变得非常快。以下是 Android 开发者网站上关于 ART 的一些话:

ART 是一个新的 Android 运行时,在 4.4 版本的 KitKat 中进行了实验性引入。这是 KitKat 中正在进行的工作的预览。它可用于获取早期开发人员和合作伙伴的反馈。

为什么选择解释器语言?

编译器语言和解释器语言之间最大的区别就是在于编译的时间的长短上。如果编译是在运行时之前进行的,它是一种编译语言,如果它是在运行时编译的,它是一种解释语言。

由于编译器语言是预先编译好的,它的缺点是平台依赖性和磁盘空间利用率,而不是执行速度快的优点。代表性的有C、C++、C#等属于编译语言,而解释语言由于在运行时逐行解释和执行,相对来说比编译语言慢,但是它的优点是在运行时可以立即执行代码已更改。通常,JavaScript、HTML、Python、SQL、Ruby 等属于解释型语言。

在Java的情况下,它是一种编译器语言,因为它通过javac(编译器)进行编译并获得字节码作为结果。

DVM 和 ART 的编译器(JIT 与 AOT)

JIT (Just In Time) 是从 Android 2.2 版本 (Froyo) 应用的DVM 内的编译器。由于应用程序将字节码从虚拟机翻译成机器语言的结果存储在缓存中,当需要再次执行字节码时,由于取回缓存的内容,性能得到提升,但单独的内存缓存是required. 它比方法需要更多的内存空间。

AOTART 内部的编译器,与 DVM 的 JIT 不同,它在安装应用程序时将整个应用程序字节码翻译成机器语言。因此,存在安装时间较长的缺点,但由于消除了运行时解释字节码的时间,因此提高了整体性能并提高了电池寿命。

为了活动小家电,下篇继续搞。