Android中Java是如何通过内存对象堆分配工作的?

4

我对Android还不熟悉,但是我有Java的经验。 在Java中,当我们这样做时:

MyClass myObj = new MyClass();

它明显执行以下操作:
  1. 将内存指针 myObj 插入到栈中
  2. 在堆中为类型为 MyClass 的对象分配新空间
  3. 将这个新空间的引用指向 myObj
但我对以下问题有些困惑:
  1. 但在 Android 中,这是否以同样的方式工作?
  2. Android 是否拥有完整的栈和堆内存?
  3. Android 是否有 Java 虚拟机 (JVM) 来运行我的 Java 应用程序(Android 应用程序)?
非常感谢!

1
想知道这场Oracle和Google之争是关于什么的吗? - Scary Wombat
2
(第一个问题回顾)这个问题写得很好。就我个人而言,我有点想知道你为什么认为Android/Dalvik会有所不同。如果你加上这一点,可能会得到更具针对性的答案。 - eckes
2
请参见https://dev59.com/ym455IYBdhLWcg3wAvRI。 - eckes
1个回答

3
Android使用自己的Dalvik虚拟机重新实现了Java虚拟机。与基于堆栈的JVM不同,Dalvik是基于寄存器的。您可以在这里看到两者之间的比较:http://en.wikipedia.org/wiki/Dalvik_(software)#Performance 是的,Dalvik虚拟机像JVM一样有一个堆 - 只是没有堆栈。它与任何Java 1.6源代码完全兼容(1.7支持正在缓慢推出,Android Studio中提供了初步支持)。因此,在您的3个步骤中:
1.将myObj的引用插入寄存器中 2.在堆中为MyClass类型的对象分配新空间 3.将这个新空间的引用指定给myObj

2
如果您仍在寻找更多信息,这是另一个参考链接:https://dev59.com/FnA75IYBdhLWcg3wJFmY - Martin Konecny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接