4

I am new to Android but experienced in Java. In Java when we do this:

MyClass myObj = new MyClass(); 

It clearly does the following:

  1. Inserts the memory pointer myObj upto the stack
  2. Allocates a new space for object of type MyClass in the heap
  3. Appoints this new space's reference to myObj

But I am a little bit confused about the following questions:

  1. But in Android, does this work in the same way?
  2. Does Android have full stack and heap memories?
  3. Does Android have Java Virtual Machine (JVM) for my Java app (Android app) to work on?

Thanks a lot!

3
  • 1
    wonder what all this Oracle vs Google fuss is about? Commented May 23, 2014 at 0:59
  • 2
    (First Question Review) The question is well written. Personally I wondered a bit why you think Android/Dalvik would be any different. If you add that, then you might get more targeted answers. Commented May 23, 2014 at 1:16
  • 2
    See also stackoverflow.com/questions/4588076/… Commented May 23, 2014 at 1:17

1 Answer 1

3

Android re-implemented the Java Virtual Machine with their own Dalvik Virtual Machine. Unlike the JVM which is stack-based, Dalvik is register based. You can see a comparison between the two here:

http://en.wikipedia.org/wiki/Dalvik_(software)#Performance

Yes Dalvik VM has a heap just like the JVM - just not a stack. It is 100% compatible with any Java 1.6 source code (1.7 support is slowly coming, and preliminary support is available in Android Studio). So in your 3 steps:

  1. Inserts the reference to myObj in a register
  2. Allocates a new space for object of type MyClass in the heap
  3. Appoints this new space's reference to myObj
Sign up to request clarification or add additional context in comments.

1 Comment

Here's another reference if you're still looking for more: stackoverflow.com/questions/3446540/…