java如何通过内存对象堆分配在android中工作

java如何通过内存对象堆分配在android中工作,java,android,memory-management,stack,heap-memory,Java,Android,Memory Management,Stack,Heap Memory,我不熟悉安卓系统,但对Java有经验。 在Java中执行此操作时: MyClass myObj = new MyClass(); 它显然做到了以下几点: 将内存指针myObj插入堆栈 为堆中类型为MyClass的对象分配新空间 将此新空间的引用指定给myObj 但我对以下问题有点困惑: 但是在安卓系统中,这是否也是同样的工作方式 Android是否有完整的堆栈和堆内存 Android是否有Java虚拟机(JVM)供我的Java应用程序(Android应用程序)使用 非常感谢 Android用自

我不熟悉安卓系统,但对Java有经验。 在Java中执行此操作时:

MyClass myObj = new MyClass();
它显然做到了以下几点:

  • 将内存指针
    myObj
    插入堆栈
  • 为堆中类型为
    MyClass
    的对象分配新空间
  • 将此新空间的引用指定给
    myObj
  • 但我对以下问题有点困惑:

  • 但是在安卓系统中,这是否也是同样的工作方式
  • Android是否有完整的堆栈和堆内存
  • Android是否有Java虚拟机(JVM)供我的Java应用程序(Android应用程序)使用

  • 非常感谢

    Android用自己的Dalvik虚拟机重新实现了Java虚拟机。与基于堆栈的JVM不同,Dalvik是基于寄存器的。您可以在此处看到两者之间的比较:

    是的,Dalvik VM有一个堆,就像JVM一样——只是没有堆栈。它与任何Java1.6源代码都100%兼容(1.7支持正在慢慢到来,Android Studio提供了初步支持)。因此,在您的3个步骤中:

  • 在寄存器中插入对myObj的引用
  • 为堆中MyClass类型的对象分配新空间
  • 将此新空间的引用指定给myObj

  • 想知道甲骨文和谷歌之间的争论是关于什么的吗?(第一个问题回顾)这个问题写得很好。就我个人而言,我有点想知道为什么你认为Android/Dalvik会有所不同。如果您添加了这一点,那么您可能会得到更具针对性的答案。如果您仍在寻找更多答案,请参阅这里的另一个参考: