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