7月12日学习内容
理清幾個術(shù)語!
?
1、JAVA虛擬機(jī)
http://shenyuc629.iteye.com/blog/1698770
JAVA程序為了能一次編譯之后再不同的平臺上運(yùn)行,就是因為在運(yùn)行程序之前,把這臺機(jī)器想象成了屬于自己的那臺熟悉的機(jī)器,即為虛擬機(jī)。
JAVA程序先在虛擬機(jī)上運(yùn)行,再將程序翻譯為機(jī)器指令在具體的機(jī)器上運(yùn)行。
一個JAVA程序?qū)?yīng)一個虛擬機(jī),3個JAVA程序就有三個虛擬機(jī)。
那為什么不多個JAVA程序共用一個虛擬機(jī)呢?我也不知道
http://blog.csdn.net/bingduanlbd/article/details/8363734
看了這篇文章,我猜想是因為 一個JAVA虛擬機(jī),它啟動的時候,自己的電腦是要給它分配一段內(nèi)存空間的,然后它還有自己的Java棧、程序計數(shù)寄存器(PC寄存器)等等。
然后一個JAVA程序可能會有多個線程等等。如果共用的話,要么就動態(tài)增加虛擬機(jī)的內(nèi)存,要么就一開始給它很大的內(nèi)存。動態(tài)增加感覺麻煩,還不如直接換一個虛擬機(jī)。
虛擬機(jī)的內(nèi)存可以自己設(shè)置,如果設(shè)很大的話,那不就相當(dāng)于在WINDOWS下裝個UBUNTU跑了么,要是只運(yùn)行一個程序,也沒什么必要。一般的電腦又不會只運(yùn)行JAVA程序。
http://blog.sina.com.cn/s/blog_61fbf8d101015r1z.html (JVM設(shè)置內(nèi)存)
?
2、JRE,Java運(yùn)行環(huán)境
是運(yùn)行JAVA程序所必須的環(huán)境集合,包含JVM標(biāo)準(zhǔn)實現(xiàn)及Java核心類庫。
?
3、ART Android Runtime
http://www.cnblogs.com/manuosex/p/3634375.html
http://blog.csdn.net/luoshengyang/article/details/39307813
android要做到在不同的設(shè)備下使用,一定要使用虛擬機(jī),但是虛擬機(jī)是跟設(shè)備有關(guān)的。每臺手機(jī)都裝了對應(yīng)的虛擬機(jī),就相當(dāng)于所有的android程序都在相同的機(jī)器上跑了,APP開發(fā)者只需要弄懂一套API即可,不用考慮硬件之間的差異。
但這就會引發(fā)一個問題,APP每次跑起來,都要在虛擬機(jī)上運(yùn)行,然后虛擬機(jī)再將字節(jié)碼翻譯成機(jī)器代碼,每次執(zhí)行都會不斷的翻譯翻譯翻譯,即時優(yōu)化過后還是會很慢。
ART模式與Dalvik模式最大的不同在于,啟用ART模式后,系統(tǒng)在安裝應(yīng)用的時候會進(jìn)行一次預(yù)編譯,將字節(jié)碼轉(zhuǎn)換為機(jī)器語言(OAT,OAT文件是一種Android私有ELF文件格式,它不僅包含有從DEX文件翻譯而來的本地機(jī)器指令,還包含有原來的DEX文件內(nèi)容。)存儲在本地,這樣在運(yùn)行程序時就不會每次都進(jìn)行一次編譯了,執(zhí)行效率也大大提升。這種編譯的方式與c++,c語言編譯方式蠻像。
不深究。
?
Binder機(jī)制不懂
Service Manager不懂
轉(zhuǎn)載于:https://www.cnblogs.com/wzben/p/5662691.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
- 上一篇: 您试图在此 Web 服务器上访问的 We
- 下一篇: 将列表的元素去重