1、JVM
.java----->.class----->.jar
运行在内存的 栈
栈虚拟机
2、DVM
.java----->.class------>.dex-----(加上其它资源文件)---->apk
运行在CPU的 寄存器
寄存器虚拟机
----------------------------------------------------------
3、DVM与JVM的区别
dvm执行的是.dex文件,jvm执行的是.class文件。
4、.jar文件和.dex文件的区别
.jar 文件
里含有多个.class文件,每个.class文件都包含文件头,这样IO操作效率低。
举例:
平时我们复制项目工作空间,和复制一个高清电影。项目工作空间大小<高清电影。
但复制的时候,发现高清电影复制速度比项目工作空间快。
因为高清电影虽然大,但只有一个文件,即一个文件头。项目工作空间有很多文件,即多个文件头。
.dex文件
不是.class文件的简单打包,dex工具,去掉了app里所有.class文件的冗余信息,再整合到.dex文件中,减少了IO的操作,提高了查找速度。
对比如下图