I am new to Android but experienced in Java. In Java when we do this:
MyClass myObj = new MyClass();
It clearly does the following:
- Inserts the memory pointer
myObj
upto the stack - Allocates a new space for object of type
MyClass
in the heap - Appoints this new space's reference to
myObj
But I am a little bit confused about the following questions:
- But in Android, does this work in the same way?
- Does Android have full stack and heap memories?
- Does Android have Java Virtual Machine (JVM) for my Java app (Android app) to work on?
Thanks a lot!
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:
- Inserts the reference to myObj in a register
- Allocates a new space for object of type MyClass in the heap
- Appoints this new space's reference to myObj
来源:https://stackoverflow.com/questions/23819452/how-java-works-in-android-through-memory-object-heap-allocation