gpt4 book ai didi

android - 新的 ART 是虚拟机吗?

转载 作者:搜寻专家 更新时间:2023-11-01 08:50:03 25 4
gpt4 key购买 nike

我已阅读互联网上有关适用于 Android 操作系统的新 ART 运行时的文章。许多文章称 ART 为新的虚拟机,我认为这是错误的,因为应用程序在安装后完全编译为 native 机器代码。如果 ART 不是虚拟机,那么它会做什么?它是否为正在运行的应用程序提供运行时环境,例如垃圾收集器、内存管理器等?

最佳答案

是的,尽管应用程序已完全编译为 native 代码,但 ART 是一个虚拟机。

过度简化:

ART 本身是一个 Android 应用程序,它模拟一个假想机器的硬件(CPU、寄存器等),其中的 CPU 具有由字节码组成的机器代码指令集。

Android 程序 (APK) 被编译成由该虚拟机程序执行的字节码指令。

虚拟机 (ART) 由 native 代码程序(即由硬件 CPU 执行的程序)实现。虚拟机的每条字节码指令都有对应的 native 代码,实现虚拟机操作,改变虚拟机状态。因此,例如,加载寄存器的字节码指令不一定会导致加载硬件寄存器。相反,它会导致 native 代码程序 (ART) 执行代表加载虚拟机寄存器的操作(可能加载内存位置而不是硬件寄存器)。

当使用解释时,实现虚拟机的 native 代码程序检索字节码指令并解码字节码以确定执行哪一组 native 代码指令以使虚拟机进入所需的状态字节码指令。

当字节码被编译成本地代码(即时或提前)时,字节码解码步骤就被取消了。相反,虚拟机的字节码指令被实现虚拟机操作的 native 代码所取代。

也就是说,APK 不再由一系列字节码指令组成,它现在由一系列 ART native 代码指令组成,这些指令表示字节码所需的状态更改。

关键是即使不再处理字节码,虚拟机(ART)仍然是在硬件上执行的程序,而不是APK程序。

关于android - 新的 ART 是虚拟机吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24367777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com