【问题标题】:Does Android Runtime(ART or Dalvik) contain Java VM stack or Native Method Stack like JVM?Android 运行时(ART 或 Dalvik)是否包含 Java VM 堆栈或 JVM 之类的本机方法堆栈?
【发布时间】:2019-03-30 21:40:49
【问题描述】:

根据 Oracle DocsRun-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 运行时数据区是什么样的?

【问题讨论】:

  • 首先,这些只是名称,赋予部分内存以表示目的。因此,所有执行环境都有它们或类似的,即使它们可能使用不同的名称。此外,你肯定有太多的问题。然而,对于 Stackoverflow 来说,仅第三个就太宽泛了。如果你想知道 Dalvik 的运行时数据区是什么样子,请查阅 Dalvik 内部的文档(如果有的话)。
  • @Holger 感谢您的回复。关于Dalvik的运行时数据区我搜索了很久,但似乎“运行时数据区”这个概念只会在JVM中提及。我已经阅读了一些关于 Dalvik 内部的文章,但是我没有发现任何类似于 JVM 的运行时数据区域的东西。

标签: java android jvm android-runtime


【解决方案1】:
  1. 基于堆栈的“堆栈”与 Java VM 堆栈/本机方法堆栈中的“堆栈”有什么区别。

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

ART/Dalvik 是否包含类似于 JVM 中的 Java VM 堆栈的堆栈?

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

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

您可以查看此示例,并阅读更多关于基于堆栈与基于寄存器的 VM here

【讨论】:

    猜你喜欢
    • 2014-09-13
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2011-03-29
    • 2016-05-09
    • 1970-01-01
    相关资源
    最近更新 更多