成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Dalvik與ART的架構(gòu)差異,你學(xué)會了嗎?

開發(fā) 架構(gòu)
ART是在Android 5.0(API級別21)中引入的,旨在改進應(yīng)用程序的執(zhí)行性能和兼容性。在ART出現(xiàn)之前,Android使用的是Dalvik虛擬機作為其運行時環(huán)境。與Dalvik相比,ART在運行應(yīng)用程序時進行了更多的優(yōu)化和編譯,從而提高了應(yīng)用程序的執(zhí)行效率和穩(wěn)定性。

Dalvik

Dalvik是Google公司自己設(shè)計用于Android平臺的Java虛擬機。它是Android移動設(shè)備平臺的核心組成部分之一,可以支持已轉(zhuǎn)換為.dex(即Dalvik Executable)格式的Java應(yīng)用程序的運行。.dex格式是專為Dalvik設(shè)計的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng)。Dalvik經(jīng)過優(yōu)化,允許在有限的內(nèi)存中同時運行多個虛擬機的實例,并且每一個Dalvik應(yīng)用作為一個獨立的Linux進程執(zhí)行。獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關(guān)閉。此外,Dalvik虛擬機基于寄存器,與標(biāo)準(zhǔn)Java虛擬機(JVM)基于棧的架構(gòu)存在顯著差異。

  • 原理:一個應(yīng)用首先經(jīng)過DX工具將class文件轉(zhuǎn)換成Dalvik虛擬機可以執(zhí)行的dex文件,然后由類加載器加載原生類和 Java類。Dalvik虛擬機負責(zé)解釋器根據(jù)指令集對Dalvik字節(jié)碼進行釋dex文件為機器碼。
  • JIT編譯器:Dalvik負責(zé)將dex翻譯為機器碼交由系統(tǒng)調(diào)用,有一個缺陷,每次執(zhí)行代碼,都需要Dalvik將操作碼代碼翻譯為機器對應(yīng)的微處理器指令,然后交給底層系統(tǒng)處理,運行效率很低。JIT編譯器,當(dāng)App運行時,每當(dāng)遇到一個新類,JIT編譯器就會對這個類進行即時編譯,經(jīng)過編譯后的代碼,會被優(yōu)化成相當(dāng)精簡的原生型指令碼(即native code),這樣在下次執(zhí)行到相同邏輯的時候,速度就會更快。
  • Dalvik的啟動流程:Dalvik進程管理是依賴于linux的進程體系結(jié)構(gòu)的,如要為應(yīng)用程序創(chuàng)建一個進程,它會使用linux的fork機制來復(fù)制一個進程。

ART

ART(Android Runtime)是Android平臺上的一個運行時環(huán)境,用于執(zhí)行Android應(yīng)用程序。它是Android操作系統(tǒng)的重要組成部分,為應(yīng)用程序提供了執(zhí)行環(huán)境。

ART是在Android 5.0(API級別21)中引入的,旨在改進應(yīng)用程序的執(zhí)行性能和兼容性。在ART出現(xiàn)之前,Android使用的是Dalvik虛擬機作為其運行時環(huán)境。與Dalvik相比,ART在運行應(yīng)用程序時進行了更多的優(yōu)化和編譯,從而提高了應(yīng)用程序的執(zhí)行效率和穩(wěn)定性。

當(dāng)應(yīng)用程序在Android設(shè)備上安裝時,ART會將其轉(zhuǎn)換為已優(yōu)化的機器代碼,這有助于提高應(yīng)用程序的運行速度。此外,ART還支持即時編譯(JIT),這意味著它在運行時將字節(jié)碼轉(zhuǎn)換為機器代碼,進一步提高了應(yīng)用程序的執(zhí)行效率。

  • 原理:JIT是運行時編譯,這樣可以對執(zhí)行次數(shù)頻繁的dex代碼進行編譯和優(yōu)化,減少以后使用時的翻譯時間, 但將dex翻譯為本地機器碼也要占用時間。ART的策略與Dalvik不同,在ART環(huán)境中,應(yīng)用在第一次安裝的時候,字節(jié)碼就會預(yù)先編譯成機器碼,使其成為真正的本地應(yīng)用。之后打開App的時候,不需要額外的翻譯工作,直接使用本地機器碼運行,因此運行速度提高。
  • AOT:AOT是靜態(tài)編譯,應(yīng)用在安裝的時候會啟動dex2oat過程把dex預(yù)編譯成ELF文件,每次運行程序的時候不用重新編譯。

使用ART的好處:

  1. 提高應(yīng)用程序的執(zhí)行速度:由于ART采用了更高效的編譯方式,應(yīng)用程序的運行速度得到了顯著提升。
  2. 更好的兼容性:ART對應(yīng)用程序的代碼進行了更全面的優(yōu)化,減少了因代碼問題導(dǎo)致的崩潰或錯誤。
  3. 更少的內(nèi)存占用:ART的優(yōu)化編譯方式使得應(yīng)用程序占用的內(nèi)存更少,從而提高了設(shè)備的整體性能。
  4. 更好的安全性:ART對應(yīng)用程序代碼進行了更嚴(yán)格的檢查和驗證,增強了應(yīng)用程序的安全性。

區(qū)別

ART和Dalvik在執(zhí)行方式、編譯優(yōu)化和性能方面存在顯著差異。ART通過預(yù)編譯和全面優(yōu)化提供了更高的執(zhí)行效率和穩(wěn)定性,而Dalvik則更注重在有限內(nèi)存中的并發(fā)執(zhí)行能力。隨著Android版本的演進,ART逐漸成為默認的運行時環(huán)境,以提供更好的應(yīng)用程序性能和用戶體驗。

Dalvik使用JIT,ART結(jié)合了兩者的優(yōu)勢,使用AOT+JIT(Android7.0之后混合使用,Android5.0-Android7.0之前使用AOT)DVM時為32位CPU設(shè)計的,而 ART支持64位并兼容32位CPU,這也是DVM被淘汰的主要原因之一。ART對垃圾回收機制進行了改進,比如更頻繁地執(zhí)行并行垃圾收集,將GC暫停由2次減少為1次等。

總結(jié)一下,它們之間存在一些關(guān)鍵的區(qū)別,主要表現(xiàn)在執(zhí)行方式、編譯優(yōu)化和性能等方面。

  1. 執(zhí)行方式:Dalvik是依賴于即時編譯(JIT)的,它在運行應(yīng)用程序時將字節(jié)碼轉(zhuǎn)換為本地機器碼。這意味著應(yīng)用程序的代碼在每次運行時都需要被解釋和編譯,這可能會導(dǎo)致一定的性能開銷。相比之下,ART采用預(yù)編譯(AOT)方式,在應(yīng)用程序安裝時將其編譯成本地機器碼,從而減少了運行時的編譯開銷,提高了執(zhí)行效率。
  2. 編譯優(yōu)化:Dalvik主要關(guān)注在有限的內(nèi)存中同時運行多個虛擬機的實例,而ART則更注重應(yīng)用程序的執(zhí)行效率和穩(wěn)定性。ART在編譯過程中會對應(yīng)用程序代碼進行更全面的優(yōu)化,包括空間優(yōu)化和時間優(yōu)化,以實現(xiàn)更快的執(zhí)行速度和更少的內(nèi)存占用。
  3. 性能:由于ART采用了預(yù)編譯和更全面的優(yōu)化方式,它在執(zhí)行應(yīng)用程序時通常表現(xiàn)出更高的性能。與Dalvik相比,ART可以實現(xiàn)更快的啟動速度、更流暢的用戶體驗和更低的功耗。此外,ART還支持更多的語言和框架,使得開發(fā)人員能夠更加靈活地創(chuàng)建應(yīng)用程序。



責(zé)任編輯:武曉燕 來源: 沐雨花飛蝶
相關(guān)推薦

2024-02-02 11:03:11

React數(shù)據(jù)Ref

2023-08-28 07:02:10

2023-08-01 12:51:18

WebGPT機器學(xué)習(xí)模型

2024-01-02 12:05:26

Java并發(fā)編程

2024-01-30 18:29:29

微服務(wù)架構(gòu)Ingress

2022-07-08 09:27:48

CSSIFC模型

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-09-09 09:00:12

架構(gòu)設(shè)計算法

2023-05-18 09:01:11

MBRGPT分區(qū)

2023-12-07 07:03:09

2024-05-29 07:47:30

SpringJava@Resource

2022-12-06 08:37:43

2024-03-06 08:28:16

設(shè)計模式Java

2022-06-16 07:50:35

數(shù)據(jù)結(jié)構(gòu)鏈表

2022-12-06 07:53:33

MySQL索引B+樹

2023-01-31 08:02:18

2023-10-06 14:49:21

SentinelHystrixtimeout
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产一区二区三区视频 | 午夜精品一区二区三区三上悠亚 | 波多野结衣一区二区三区在线观看 | 亚洲人成一区二区三区性色 | 久久综合影院 | 日韩免费视频一区二区 | 一区不卡在线观看 | 欧美一区二区在线观看 | 一区二区三区在线免费 | 亚洲成人自拍 | 欧美性大战久久久久久久蜜臀 | 日本欧美国产在线 | 午夜www | 亚洲精品福利在线 | 中文字幕11页 | 欧美成人精品激情在线观看 | 成人深夜福利 | 色爱综合网| 亚洲精品av在线 | 久草中文在线观看 | 久久大 | 国产中文字幕在线 | 午夜手机在线视频 | 国产精品视频www | 99热首页 | 97视频在线观看免费 | 自拍视频一区二区三区 | 欧美久久影院 | 亚洲欧美日韩在线 | 91网站在线看 | 日韩不卡在线观看 | 欧美5区| 国产精品一区二区三区四区五区 | 天天摸天天干 | 中文字幕av亚洲精品一部二部 | 天堂综合网 | 黄色男女网站 | 九九亚洲 | 欧美一级免费看 | 国产一区二区三区视频 | 羞羞视频免费观看 |