Android Runtime(ART或Dalvik)是否包含Java VM堆栈或像JVM这样的本机方法堆栈?

时间:2018-10-26 07:18:43

标签: java android jvm android-runtime

根据Oracle文档Run-Time Data Areas的说明,JVM包含数据区域的各个部分: enter image description here 我还了解到JVM是基于堆栈的,而ART / Dalvik是基于寄存器的。 Dalvik堆由Active Heap和Zygote Heap制成。
问题如下:
1.基于堆栈的“堆栈”与Java VM堆栈/本机方法堆栈中的“堆栈”有什么区别。
2. ART / Dalvik是否在JVM中包含Java Java堆栈之类的堆栈?
3. ART / Dalvik运行时数据区是什么样的?

1 个答案:

答案 0 :(得分:4)

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

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

  

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

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

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

您可以看到一个示例,并详细了解基于堆栈的虚拟机和基于寄存器的虚拟机here