說明
DVM(Dalvik VM) 是google公司開發(fā)的專門運(yùn)行Android應(yīng)用的虛擬機(jī)殿遂。
JVM(Java VM)是Sun公司開發(fā)運(yùn)行Java應(yīng)用的虛擬機(jī)病附,后來被Oracle收購谈秫。雙方一直在干架绕沈。良蛮。。
區(qū)別
區(qū)別一:dvm執(zhí)行的是.dex格式文件 jvm執(zhí)行的是.class文件 android程序編譯完之后生產(chǎn).class文件然走,然
后援制,dex工具會把.class文件處理成.dex文件,然后把資源文件和.dex文件等打包成.apk文件芍瑞。apk就是android package的意思晨仑。 jvm執(zhí)行的是.class文件。
區(qū)別二:dvm是基于寄存器的虛擬機(jī) 而jvm執(zhí)行是基于虛擬棧的虛擬機(jī)。寄存器存取速度比椇榧海快的多妥凳,dvm可以根據(jù)硬件實現(xiàn)最大的優(yōu)化,比較適合移動設(shè)備答捕。
區(qū)別三:.class文件存在很多的冗余信息逝钥,dex工具會去除冗余信息,并把所有的.class文件整合到.dex文件中拱镐。減少了I/O操作艘款,提高了類的查找速度
dex文件生成
參考:
http://www.reibang.com/p/f2234e69d96c
http://www.reibang.com/p/6a58f4472066