Android 中的Dalvik和ART

1.什么是Dalvik撕氧?
Dalvik是Google公司自己設(shè)計(jì)用于Android平臺(tái)的虛擬機(jī)。
Dalvik虛擬機(jī)是Google等廠商合作開(kāi)發(fā)的Android移動(dòng)設(shè)備平臺(tái)的核心組成部分之一喇完。
它可以支持已轉(zhuǎn)換為 .dex格式的Java應(yīng)用程序的運(yùn)行伦泥,.dex格式是專為Dalvik設(shè)計(jì)的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng)锦溪。
Dalvik 經(jīng)過(guò)優(yōu)化不脯,允許在有限的內(nèi)存中同時(shí)運(yùn)行多個(gè)虛擬機(jī)的實(shí)例,并且每一個(gè)Dalvik 應(yīng)用作為一個(gè)獨(dú)立的Linux 進(jìn)程執(zhí)行刻诊。獨(dú)立的進(jìn)程可以防止在虛擬機(jī)崩潰的時(shí)候所有程序都被關(guān)閉防楷。
很長(zhǎng)時(shí)間以來(lái),Dalvik虛擬機(jī)一直被用戶指責(zé)為拖慢安卓系統(tǒng)運(yùn)行速度不如IOS的根源则涯。
2014年6月25日复局,Android L 正式亮相于召開(kāi)的谷歌I/O大會(huì),Android L 改動(dòng)幅度較大粟判,谷歌將直接刪除Dalvik亿昏,代替它的是傳聞已久的ART。

2.Dalvik和JVM區(qū)別
Dalvik是基于寄存器的档礁,而JVM是基于棧的角钩。
Dalvik運(yùn)行dex文件,而JVM運(yùn)行java字節(jié)碼
自Android 2.2開(kāi)始呻澜,Dalvik支持JIT(just-in-time递礼,即時(shí)編譯技術(shù))。
優(yōu)化后的Dalvik較其他標(biāo)準(zhǔn)虛擬機(jī)存在一些不同特性: 
1.占用更少空間 
2.為簡(jiǎn)化翻譯易迹,常量池只使用32位索引  
3.標(biāo)準(zhǔn)Java字節(jié)碼實(shí)行8位堆棧指令,Dalvik使用16位指令集直接作用于局部變量宰衙。局部變量通常來(lái)自4位的“虛擬寄存器”區(qū)。這樣減少了Dalvik的指令計(jì)數(shù)睹欲,提高了翻譯速度供炼。 
 當(dāng)Android啟動(dòng)時(shí)窘疮,Dalvik VM 監(jiān)視所有的程序(APK)袋哼,并且創(chuàng)建依存關(guān)系樹(shù),為每個(gè)程序優(yōu)化代碼并存儲(chǔ)在Dalvik緩存中闸衫。Dalvik第一次加載后會(huì)生成Cache文件涛贯,以提供下次快速加載,所以第一次會(huì)很慢蔚出。
 Dalvik解釋器采用預(yù)先算好的Goto地址弟翘,每個(gè)指令對(duì)內(nèi)存的訪問(wèn)都在64字節(jié)邊界上對(duì)齊虫腋。這樣可以節(jié)省一個(gè)指令后進(jìn)行查表的時(shí)間。為了強(qiáng)化功能, Dalvik還提供了快速翻譯器(Fast Interpreter)稀余。

一般來(lái)說(shuō),基于堆棧的機(jī)器必須使用指令才能從堆棧上的加載和操作數(shù)據(jù),因此,相對(duì)基于寄存器的機(jī)器悦冀,它們需要更多的指令才能實(shí)現(xiàn)相同的性能。但是基于寄存器機(jī)器上的指令必須經(jīng)過(guò)編碼,因此,它們的指令往往更大睛琳。

 Dalvik虛擬機(jī)既不支持Java SE 也不支持Java ME類庫(kù)(如:Java類,AWT和Swing都不支持)盒蟆。 相反,它使用自己建立的類庫(kù)(Apache Harmony Java的一個(gè)子集)。
  1. 什么是ART
    即Android Runtime
    ART 的機(jī)制與 Dalvik 不同师骗。在Dalvik下历等,應(yīng)用每次運(yùn)行的時(shí)候,字節(jié)碼都需要通過(guò)即時(shí)編譯器(just in time 辟癌,JIT)轉(zhuǎn)換為機(jī)器碼寒屯,這會(huì)拖慢應(yīng)用的運(yùn)行效率,而在ART 環(huán)境中愿待,應(yīng)用在第一次安裝的時(shí)候浩螺,字節(jié)碼就會(huì)預(yù)先編譯成機(jī)器碼,使其成為真正的本地應(yīng)用仍侥。這個(gè)過(guò)程叫做預(yù)編譯(AOT,Ahead-Of-Time)。這樣的話鸳君,應(yīng)用的啟動(dòng)(首次)和執(zhí)行都會(huì)變得更加快速农渊。

4.ART優(yōu)缺點(diǎn)呢
優(yōu)點(diǎn):
1、系統(tǒng)性能的顯著提升或颊。
2砸紊、應(yīng)用啟動(dòng)更快、運(yùn)行更快囱挑、體驗(yàn)更流暢醉顽、觸感反饋更及時(shí)。
3平挑、更長(zhǎng)的電池續(xù)航能力游添。
4、支持更低的硬件通熄。
缺點(diǎn):
1.機(jī)器碼占用的存儲(chǔ)空間更大唆涝,字節(jié)碼變?yōu)闄C(jī)器碼之后,可能會(huì)增加10%-20%(不過(guò)在應(yīng)用包中唇辨,可執(zhí)行的代碼常常只是一部分廊酣。比如最新的 Google+ APK 是 28.3 MB,但是代碼只有 6.9 MB赏枚。)
2.應(yīng)用的安裝時(shí)間會(huì)變長(zhǎng)亡驰。

tips:現(xiàn)在智能手機(jī)大部分都可以讓用戶選擇使用Dalvik還是ART模式晓猛。當(dāng)然默認(rèn)還是使用Dalvik模式。
用法:設(shè)置-輔助功能-開(kāi)發(fā)者選項(xiàng)(開(kāi)發(fā)人員工具)-選擇運(yùn)行環(huán)境(不同的手機(jī)設(shè)置的步驟可能不一樣)凡辱。

參考文章:http://www.reibang.com/p/58f817d176b7

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末戒职,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子煞茫,更是在濱河造成了極大的恐慌帕涌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件续徽,死亡現(xiàn)場(chǎng)離奇詭異蚓曼,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)钦扭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門纫版,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人客情,你說(shuō)我怎么就攤上這事其弊。” “怎么了膀斋?”我有些...
    開(kāi)封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵梭伐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我仰担,道長(zhǎng)糊识,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任摔蓝,我火速辦了婚禮赂苗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贮尉。我一直安慰自己拌滋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布猜谚。 她就那樣靜靜地躺著败砂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪龄毡。 梳的紋絲不亂的頭發(fā)上吠卷,一...
    開(kāi)封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音沦零,去河邊找鬼祭隔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疾渴。 我是一名探鬼主播千贯,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼搞坝!你這毒婦竟也來(lái)了搔谴?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤桩撮,失蹤者是張志新(化名)和其女友劉穎敦第,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體店量,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芜果,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了融师。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片右钾。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旱爆,靈堂內(nèi)的尸體忽然破棺而出舀射,到底是詐尸還是另有隱情,我是刑警寧澤怀伦,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布脆烟,位于F島的核電站,受9級(jí)特大地震影響房待,放射性物質(zhì)發(fā)生泄漏浩淘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一吴攒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧砂蔽,春花似錦洼怔、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至诡右,卻和暖如春安岂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帆吻。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工域那, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猜煮。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓次员,卻偏偏與公主長(zhǎng)得像败许,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淑蔚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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

  • 要弄清楚Dalvik和Art的區(qū)別市殷,首先得知道它們的概念: Dalvik虛擬機(jī) 是Google等廠商合作開(kāi)發(fā)的An...
    Viking_Den閱讀 2,142評(píng)論 0 1
  • 什么是Dalvik?Dalvik是Google公司自己設(shè)計(jì)用于Android平臺(tái)的虛擬機(jī)带迟。Dalvik虛擬機(jī)是Go...
    e小e閱讀 1,419評(píng)論 0 0
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,521評(píng)論 25 707
  • 你為何要離開(kāi)音羞。 因?yàn)橐牡穆曇糇摺K嬖V我邮旷,我該去遠(yuǎn)方黄选。 然后一直沒(méi)有回家嗎。他問(wèn)婶肩。 在那里已經(jīng)沒(méi)有住的地方了...
    琳Lynn閱讀 373評(píng)論 0 5
  • 第一名 72%的人后悔年輕時(shí)努力不夠 所謂少壯不努力律歼,老大徒傷悲民镜,青春的大好時(shí)光總是流逝得那么快。而在青春歲月里险毁,...
    純婷閱讀 346評(píng)論 2 2