- Java 代码最终都会被编译器编译为以 .class 结尾的字节码文件,然后最终被 JVM执行。
- JVM可以有不同的实现,只要符合JVM规范就可以。
- Dalvik是JVM在Android平台上的实现,但又做了改造优化,执行的是.dex文件,使其更适用于移动端,所以Dalvik没有完全符合JVM规范。
- Dalvik 架构基于寄存器(register-based),而 JVM架构基于栈(stack-based)。
- Android5.0版本默认启用Android Runtime(ART)取代Dalvik,相较于Dalvik提升了应用启动速度、改善垃圾收集等。官方文档
- Android有自己的VM,所以
BaseDexClassLoader等类加载器虽然继承于java.lang.ClassLoader,但是属于Android SDK,位于dalvik.system.BaseDexClassLoader。 - 在分析Android运行时的时候可以简单的当做JVM来分析。