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的操作,提高了查找速度。
對比如下圖
?