Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How java works in android through memory object heap allocation

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!


1 Answers

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
like image 140
14 revs, 12 users 16% Avatar answered Oct 27 '25 10:10

14 revs, 12 users 16%