JVM、Dalvik、ART关系

444 阅读1分钟
  • 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来分析。