What is difference between Java Virtual Machine and Dalvik Virtual Machine?
When a Java virtual machine start running a program, it needs memory to store many things, including bytecodes and other information it extracts from loaded class files, objects the program instantiates, parameters to methods, return values, local variables, and intermediate results of computations.
The Java virtual machine organizes the memory it requires to execute a program into several runtime data areas.
Generally, stack-based machines must use instructions to load data on the stack and manipulate that data, and, thus, require more instructions than register machines to implement the same high level code, but the instructions in a register machine must encode the source and destination registers and, therefore, tend to be larger.
This difference is primarily of importance to VM interpreters for whom opcode dispatch tends to be expensive and other factors are relevant for JIT Compilation.
Being optimized for low memory requirements, Dalvik has some specific characteristics that differentiate it from other standard VMs>>>>>
The VM was just slimmed down to use less space--->> Dalvik currently has no just-in-time-compiler (JIT), but Android 2.0 includes experimental source for one (disabled by default). The constant pool has been modified to use only32-bit indexes to simplify the interpreter. It uses its own bytecode, not Java bytecode***