Dalvik和ART都是Android虛擬機的一種實現方式,它們的主要區別在于執行字節碼的方式不同。
Dalvik虛擬機:Dalvik虛擬機是Android 4.4及之前版本中默認的虛擬機。它使用的是即時編譯(Just-In-Time Compilation,JIT)的方式來執行字節碼。在應用程序運行時,Dalvik會將字節碼轉換成機器碼并直接執行,這樣可以提高應用程序的運行效率。但是,每次運行應用程序時都需要進行即時編譯的過程,會導致應用程序啟動較慢。
ART虛擬機:ART虛擬機是Android 5.0及之后版本中默認的虛擬機。它使用的是預編譯(Ahead-Of-Time Compilation,AOT)的方式來執行字節碼。在應用程序安裝時,ART會將字節碼預先編譯成機器碼,并保存在設備中。這樣,在應用程序運行時就可以直接執行機器碼,而不需要進行即時編譯的過程。這種方式可以提高應用程序的啟動速度和運行效率,但是會占用更多的存儲空間。
總結來說,Dalvik虛擬機使用即時編譯的方式執行字節碼,啟動較慢但運行效率高,而ART虛擬機使用預編譯的方式執行字節碼,啟動速度快但需要占用更多的存儲空間。在Android 7.0之后,ART虛擬機還引入了Just-In-Time編譯器(JIT Compiler),可以在運行時對部分代碼進行即時編譯,以提高運行效率。