Android 运行时(ART 或 Dalvik)是否包含 Java VM 堆栈或本地方法堆栈(如 JVM)?

Mum*_*ing 4 java android jvm android-runtime

根据 Oracle Docs Run-Time Data Areas状态,JVM 包含数据区的各个部分: 在此处输入图片说明 我还了解到 JVM 是基于堆栈的,而 ART/Dalvik 是基于寄存器的。Dalvik 堆由 Active Heap 和 Zygote Heap 组成。
问题如下:
1. stack-based中的“Stack”和Java VM stack/Native Method Stack中的“Stack”有什么区别。
2. ART/Dalvik 是否包含像 JVM 中的 Java VM 堆栈那样的堆栈?
3. ART/Dalvik 运行时数据区是什么样的?

BLu*_*NiX 5

  1. 基于堆栈的“堆栈”和 Java VM 堆栈/本机方法堆栈中的“堆栈”有什么区别。

他们指的是同一件事。“基于堆栈的”VM 使用stack其内存空间来执行逻辑和算术运算。

ART/Dalvik 是否包含像 JVM 中的 Java VM 堆栈那样的堆栈?

Android VM 实现(Dalvik 和 ART)不是Stack based,而是Register based。这让 Android 可以做的一件事是将虚拟寄存器直接映射到真实的硬件寄存器,从而提高执行速度和效率。

  1. ART/Dalvik 运行时数据区是什么样的?

您可以查看一个示例,并在此处阅读有关基于堆栈和基于寄存器的 VM 的更多信息