Android運(yùn)行中DVM和ART表現(xiàn)對(duì)比
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
在了解 Android 運(yùn)行時(shí)之前,我們需要了解什么是運(yùn)行時(shí)環(huán)境以及一些基本概念,即 Java 虛擬機(jī)(JVM)和 Dalvik 虛擬機(jī)(DVM)的功能。
什么是運(yùn)行時(shí)?
簡(jiǎn)單來說,運(yùn)行時(shí)就是一個(gè)供操作系統(tǒng)使用的系統(tǒng),它負(fù)責(zé)將你用高級(jí)語言(比如 Java)編寫的代碼轉(zhuǎn)換成 CPU/處理器能夠理解的機(jī)器碼。
運(yùn)行時(shí)由你的程序運(yùn)行時(shí)所執(zhí)行的指令構(gòu)成,盡管本質(zhì)上它們不屬于程序代碼的任何一部分。
CPU (或者更通用的說法電腦)只能夠理解機(jī)器語言(二進(jìn)制代碼),所以為了使程序能夠在 CPU 上運(yùn)行,就必須將它們翻譯成機(jī)器碼,這一工作由翻譯器完成。
這里按序列出歷代翻譯器:
1.匯編器
它直接將匯編語言翻譯成機(jī)器碼,所以它的速度非常快。
2.編譯器
它將源碼翻譯成匯編語言,然后再用匯編器轉(zhuǎn)換成機(jī)器碼。這種方式編譯過程很慢但是執(zhí)行速度很快。但是使用編譯器最大的問題是編譯出來的機(jī)器碼依賴于特定的平臺(tái)。換句話說,在一臺(tái)機(jī)器上可以運(yùn)行的代碼在另一臺(tái)不同的機(jī)器上可能就無法運(yùn)行。
3.解釋器
它在執(zhí)行程序時(shí)才翻譯代碼。由于代碼翻譯是在執(zhí)行階段才發(fā)生,所以執(zhí)行速度很慢。
JAVA 代碼是怎么執(zhí)行的?
為了使代碼和平臺(tái)無關(guān),JAVA開發(fā)了 JVM,即 Java 虛擬機(jī)。它為每一個(gè)平臺(tái)開發(fā)一個(gè) JVM,也就意味著 JVM 是和平臺(tái)相關(guān)的。Java 編譯器將 .java 文件轉(zhuǎn)換成 .class文件,也就是字節(jié)碼。最終將字節(jié)碼提供給 JVM,由 JVM 將它轉(zhuǎn)換成機(jī)器碼。
這比解釋器要快但是比 C++ 編譯要慢。
Android 代碼是怎么執(zhí)行的?
在 Android 中,Java 類被轉(zhuǎn)換成 DEX 字節(jié)碼。DEX 字節(jié)碼通過 ART 或者 Dalvik runtime 轉(zhuǎn)換成機(jī)器碼。這里 DEX 字節(jié)碼和設(shè)備架構(gòu)無關(guān)。
Dalvik 是一個(gè)基于 JIT(Just in time)編譯的引擎。使用 Dalvik 存在一些缺點(diǎn),所以從 Android 4.4(Kitkat)開始引入了 ART 作為運(yùn)行時(shí),從 Android 5.0(Lollipop)開始 ART 就全面取代了Dalvik。Android 7.0 向 ART 中添加了一個(gè) just-in-time(JIT)編譯器,這樣就可以在應(yīng)用運(yùn)行時(shí)持續(xù)的提高其性能。
重點(diǎn):Dalvik 使用 JIT(Just in time)編譯而 ART 使用 AOT(Ahead of time)編譯。
下圖描述了 Dalvik 虛擬機(jī)和 Java 虛擬機(jī)之間的差別。
Just In Time (JIT)
使用 Dalvik JIT 編譯器,每次應(yīng)用在運(yùn)行時(shí),它實(shí)時(shí)的將一部分 Dalvik 字節(jié)碼翻譯成機(jī)器碼。在程序的執(zhí)行過程中,更多的代碼被被編譯并緩存。由于 JIT 只翻譯一部分代碼,它消耗的更少的內(nèi)存,占用的更少的物理存儲(chǔ)空間。
Ahead Of Time(AOT)
ART 內(nèi)置了一個(gè) Ahead-of-Time 編譯器。在應(yīng)用的安裝期間,他就將 DEX 字節(jié)碼翻譯成機(jī)器碼并存儲(chǔ)在設(shè)備的存儲(chǔ)器上。這個(gè)過程只在將應(yīng)用安裝到設(shè)備上時(shí)發(fā)生。由于不再需要 JIT 編譯,代碼的執(zhí)行速度要快得多。
由于 ART 直接運(yùn)行的是應(yīng)用的機(jī)器碼(native execution),它所占用的 CPU 資源要少于 使用 JIT 編譯的 Dalvik。由于占用較少的 CPU 資源也就消耗更少的電池資源。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
Android運(yùn)行中DVM和ART表現(xiàn)對(duì)比下載
相關(guān)電子資料下載
- MOVIPRO:電機(jī)初始化Starting up the motor encoder 15
- ArtDAQ數(shù)據(jù)采集管理軟件升級(jí)功能介紹 47
- Gartner 2024年十大戰(zhàn)略技術(shù)趨勢(shì),談?wù)劤掷m(xù)威脅暴露管理(CTEM) 54
- 組態(tài)王和觸摸屏與200Smart之間PN無線通訊 80
- 華三smart-link H3C智能鏈接配置步驟 43
- Gartner發(fā)布2024年十大戰(zhàn)略技術(shù)趨勢(shì) 428
- RT-Smart應(yīng)用開發(fā)筆記:fopen造成文件被清空問題的分析記錄 85
- Molex推首款符合OCP標(biāo)準(zhǔn)KickStart連接器系統(tǒng) 37
- 聊聊SOC設(shè)計(jì)質(zhì)量相關(guān)的規(guī)范 41
- Gartner發(fā)布2024 年十大戰(zhàn)略技術(shù)趨勢(shì) 208