本文將用通俗的語(yǔ)言從底層介紹Android卡頓的歷史原因和谷歌與之斗爭(zhēng)的過程。
閱讀完這篇文章后你將:
理解計(jì)算機(jī)是如何解讀我們所寫的程序并執(zhí)行相應(yīng)功能的
了解Android虛擬機(jī)的進(jìn)化史
從底層了解造成Android卡頓的三大原因
1
基礎(chǔ)概念
首先我們需要補(bǔ)習(xí)下一些基礎(chǔ)概念,來理解計(jì)算機(jī)是如何解讀我們所寫的程序并執(zhí)行相應(yīng)功能的。
1.編譯&解釋
某些編程語(yǔ)言(如Java)的源代碼通過編譯-解釋的流程可被計(jì)算機(jī)讀懂
先上一段Java代碼
publicstaticvoidmain(String[] args){
print( ‘Hello World’)
}
這是所有程序員的第一課,只需要寫完這段代碼并執(zhí)行,電腦或手機(jī)就會(huì)打印出Hello World。
那么問題來了,英文是人類世界的語(yǔ)言,計(jì)算機(jī)(CPU)是怎么理解英文的呢?
眾所周知,0和1是計(jì)算機(jī)世界的語(yǔ)言,可以說計(jì)算機(jī)只認(rèn)識(shí)0和1。那么我們只需要把上面那段英文代碼只通過0和1表達(dá)給計(jì)算機(jī),就可以讓計(jì)算機(jī)讀懂并執(zhí)行。
結(jié)合上圖,Java源代碼通過編譯變成字節(jié)碼,然后字節(jié)碼按照模版中的規(guī)則解釋為機(jī)器碼。
2.機(jī)器碼&字節(jié)碼
機(jī)器碼
機(jī)器碼就是能被CPU直接解讀并執(zhí)行的語(yǔ)言。
但是如果使用上圖中生成的機(jī)器碼跑在另外一臺(tái)計(jì)算機(jī)中,很可能就會(huì)運(yùn)行失敗。
這是因?yàn)椴煌挠?jì)算機(jī),能夠解讀的機(jī)器碼可能不同。通俗而言就是能在A電腦上運(yùn)行的機(jī)器碼,放到B電腦上就可能就不好使了。
舉個(gè)
-
Android
+關(guān)注
關(guān)注
12文章
3968瀏覽量
129731 -
Android手機(jī)
+關(guān)注
關(guān)注
0文章
23瀏覽量
10465
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論