The document discusses the Dalvik virtual machine (VM) used in Android. It begins by explaining what a VM is and the basic parts that make up a VM. It then discusses the differences between stack-based and register-based VMs, noting that Dalvik uses a register-based architecture. The document explains that Dalvik was chosen for Android because it executes instructions more efficiently than Java VM and requires less memory. It also discusses just-in-time (JIT) compilation techniques used to improve performance of interpreted code. Specifically, Dalvik uses a trace JIT that compiles short sequences of instructions to optimize mobile performance.