DVM与JVM区别
基于的架构不同
jvm
基于栈则需要从栈中读写数据,所需的指令会更多,这样导致运行速度慢,这对于性能有限的移动设备不合适。DVM
是基于寄存器的,它没有基于栈的虚拟机在复制数据时而使用大量的出入栈指令,同时指令更加紧凑,简单,基于寄存器的指令要大,但是指令数量减少,总的代码数并不会增加多少
执行的字节码不同
Java
类被编译成一个或多个.class
文件,并打包成jar
文件,然后JVM
会通过相应的.class
文件与jar
文件获取相应的字节码。执行顺序.java
文件->.class
文件->.jar
文件,而DVM
会用dx
工具将所有的class
文件转换成.dex
文件,然后它会从该.dex
文件中读取指令与数据。执行顺序.java
文件->.class
文件->.dex
文件
.jar
文件中包含多个.class
文件,每个.class
文件又包含该类的常量池、类信息