1.Android DVM(Dalvik VM)的進程和Linux的進程, 應用程式的進程是同一個概念嗎? DVM(Dalvik VM)指dalvik的虛擬機。每一個Android應用程式都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。而每一個DVM都是在Linux 中的一個進程,所 ...
1.Android DVM(Dalvik VM)的進程和Linux的進程, 應用程式的進程是同一個概念嗎?
DVM(Dalvik VM)指dalvik的虛擬機。每一個Android應用程式都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。而每一個DVM都是在Linux 中的一個進程,所以說可以認為是同一個概念。運行在自己的DVM進程之中,不同的app不會相互干擾,且不會因為一個DVM的崩潰導致所有的app進程都崩潰。
Android 運行環境主要指的虛擬機技術——Dalvik。Android中的所有Java程式都是運行在Dalvik VM上的。Android上的每個程式都有自己的線程,DVM只執行.dex的Dalvik executable 文件。每個Android應用在底層都對應有一個獨立的DVM實例併在其解釋下執行。
2. Android中DVM與java中的JVM異同點:
DVM:Dalvik virtual machine
JVM:Java virtual machine
區別一:dvm執行的是.dex格式文件 jvm執行的是.class文件 Android程式編譯完之後生產.class文件,然後,dex工具會把.class文件處理成.dex文件,然後把資源文件和.dex文件等打包成.apk文件。apk就是android package的意思。 jvm執行的是.class文件。
區別二:dvm是基於寄存器的虛擬機 而jvm執行是基於虛擬棧的虛擬機。寄存器存取速度比棧快的多,dvm可以根據硬體實現最大的優化,比較適合移動設備。
區別三:.class文件存在很多的冗餘信息,dex工具會去除冗餘信息,並把所有的.class文件整合到.dex文件中。減少了I/O操作,提高了類的查找速度。