Android類加載(一)——DVM棒掠、ART孵构、Dexopt、DexAot名詞解析

Android類加載(一)——DVM烟很、ART颈墅、Dexopt、DexAot名詞解析
Android類加載(二)——雙親委托機(jī)制
Android類加載(三)——源碼解讀

JVM和DVM

DVM基于寄存器雾袱,JVM基于棧

寄存器是CPU上面的一塊存儲空間恤筛,棧是內(nèi)存上面的一段連續(xù)的存儲空間,所以CPU直接訪問自己上面的一塊空間的數(shù)據(jù)的效率肯定要大于訪問內(nèi)存上面的數(shù)據(jù)芹橡《咎常基于棧架構(gòu)的程序在運(yùn)行時(shí)虛擬機(jī)需要頻繁的從棧上讀取或?qū)懭霐?shù)據(jù),這個(gè)過程需要更多的指令分派與內(nèi)存訪問次數(shù)林说,會耗費(fèi)不少CPU時(shí)間煎殷,對于像手機(jī)設(shè)備資源有限的設(shè)備來說,這是相當(dāng)大的一筆開銷腿箩。DVM基于寄存器架構(gòu)豪直。數(shù)據(jù)的訪問通過寄存器間直接傳遞,這樣的訪問方式比基于棧方式要快很多珠移。

執(zhí)行的字節(jié)碼文件不一樣

DVM執(zhí)行的是.dex文件顶伞,JVM執(zhí)行的是.class文件。

DVM解釋執(zhí)行的是dex字節(jié)碼.dex:.java –> .class –> .dex –> .apk

JVM運(yùn)行的是java字節(jié)碼.class:.java –> .class –> .jar

本質(zhì)上java文件編譯后都是字節(jié)碼剑梳,只不過JVM運(yùn)行的是.class字節(jié)碼,而DVM運(yùn)行的是.dex字節(jié)碼

ART與Dalvik

Dalvik:Dalvik是谷歌公司自己設(shè)計(jì)用于Android平臺的Java虛擬機(jī)(DVM)滑潘。支持已轉(zhuǎn)換為.dex格式的應(yīng)用程序的運(yùn)行垢乙。.dex格式是專門為DVM設(shè)計(jì)的一種壓縮格式,適合內(nèi)存和處理器有限的系統(tǒng)语卤,例如Android系統(tǒng)追逮。(DVM負(fù)責(zé)解釋.dex文件為機(jī)器碼)

ART:Android Runtime,Android4.4中引入的一個(gè)開發(fā)者選項(xiàng)粹舵,也是Android5.0及更高版本的默認(rèn)模式钮孵。在應(yīng)用安裝的時(shí)候把字節(jié)碼預(yù)編譯成機(jī)器語言,這一機(jī)制叫做Ahead-Of-Time(AOT)預(yù)編譯眼滤。這樣應(yīng)用程序雖然安裝會很慢巴席,但是執(zhí)行效率將更高,啟動更快诅需。

  • 機(jī)器碼是直接運(yùn)行在機(jī)器上的漾唉,字節(jié)碼要解釋翻譯成機(jī)器碼荧库,在arm手機(jī)和x86手機(jī)上的機(jī)器碼是不一樣的,所以不能在app打包的時(shí)候編譯成機(jī)器碼赵刑,要在應(yīng)用安裝的時(shí)候編譯成手機(jī)對應(yīng)的機(jī)器碼
  • 在Dalvik下分衫,應(yīng)用需要解釋執(zhí)行,運(yùn)行效率低般此。
  • ART占用空間比DVM大蚪战,“空間換時(shí)間”。
  • 預(yù)編譯成機(jī)器碼也可以改善電池的續(xù)航能力铐懊,因?yàn)閼?yīng)用程序每次運(yùn)行時(shí)不用再重復(fù)編譯了邀桑,從而減少了CPU的使用頻率,降低了能耗居扒。

Dexopt與DexAot

  • Dexopt:通常情況下概漱,我們看到的Android應(yīng)用程序?qū)嶋H上是一個(gè)以.apk為后綴名的壓縮文件。我們可以通過壓縮工具對apk進(jìn)行解壓喜喂,解壓出來的內(nèi)容中有一個(gè)名為classes.dex的文件瓤摧,我們應(yīng)用在啟動的時(shí)候,classes.dex的文件會被加載到DVM中玉吁,函數(shù)dexopt會對dex字節(jié)碼進(jìn)行優(yōu)化照弥,實(shí)際上也就是由dex文件生成odex文件。


    image.png
  • DexAot:ART模式下进副,應(yīng)用在安裝時(shí)这揣,對dex文件執(zhí)行dexopt優(yōu)化后,再將odex文件進(jìn)行AOT預(yù)編譯操作(dexAot)影斑,編譯為OAT可執(zhí)行文件(機(jī)器碼)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末给赞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子矫户,更是在濱河造成了極大的恐慌片迅,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皆辽,死亡現(xiàn)場離奇詭異柑蛇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)驱闷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門耻台,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人空另,你說我怎么就攤上這事盆耽。” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵征字,是天一觀的道長都弹。 經(jīng)常有香客問我,道長匙姜,這世上最難降的妖魔是什么畅厢? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮氮昧,結(jié)果婚禮上框杜,老公的妹妹穿的比我還像新娘。我一直安慰自己袖肥,他們只是感情好咪辱,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著椎组,像睡著了一般油狂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寸癌,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天专筷,我揣著相機(jī)與錄音,去河邊找鬼蒸苇。 笑死磷蛹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的溪烤。 我是一名探鬼主播味咳,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼檬嘀!你這毒婦竟也來了槽驶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤鸳兽,失蹤者是張志新(化名)和其女友劉穎捺檬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贸铜,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年聂受,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒿秦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛋济,死狀恐怖棍鳖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤渡处,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布镜悉,位于F島的核電站,受9級特大地震影響医瘫,放射性物質(zhì)發(fā)生泄漏侣肄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一醇份、第九天 我趴在偏房一處隱蔽的房頂上張望稼锅。 院中可真熱鬧,春花似錦僚纷、人聲如沸矩距。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锥债。三九已至,卻和暖如春痊臭,著一層夾襖步出監(jiān)牢的瞬間哮肚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工趣兄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绽左,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓艇潭,卻偏偏與公主長得像拼窥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蹋凝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容