我對android davilk 虛擬機的理解

  Davilk虛擬機做爲Android平臺的一部分.Google公司花了大量時間思考針對低功耗手持設備的優化設計。在智能手機出現以前,與桌面設備相比,手持設備在內存和速度方面落後8-10年。它們的計算能力也有限。結果,手機的性能需求變得很嚴格,要求手機設計人員優化全部因素。若是查看Android中的包列表,你將會看到它們的功能全面而豐富。
  這些問題使Google公司在許多方面從新審視標準JVM實現。(Dan Bomstein(一位Stanford university 的教授)對Google公司的這個JVM實現做出了重要貢獻,他編寫了Dalvik VM,Dalvik是冰島一個小鎮的名稱。)首先.Dalvik VM獲取生成的Java類文件,將它們組合爲一個或多個Dalvik可執行文件(.dex)。它重用多個類文件中的重複信息,與未壓縮的傳統.jar文件相比,有效地將空間需求減小了一半。如圖所示:java

  其次,Google公司在Dalvik VM中對垃圾收集進行了調優,但它在早期版本中選擇了刪除java經典的JIT(Just-In-Time,即時)編譯器。後來,Android 2.3添加了JIT.報告稱這可在各類場所提供快2到5倍的原始性能,將通用應用程序的性能提高l0%-20%.android 4.4之後引入的art虛擬機,這是一種新的機制,之後有時間在說。
  最後,Dalvik VM使用了一種不一樣的彙編代碼生成方法,它使用寄存器而不是棧做爲主要的數據存儲單元。GOogle公司但願這樣能將指令減小到30%。應當指出,採用Dalvik VM的一個結果是,Android中最終的可執行程序代碼不是基於Java字節碼,而是基於.dex文件。這意味着沒法直接執行Java字節碼,必須首先獲得Java類文件,而後將它們轉換爲可連接的.dex文件。如圖所示:android

  這種對性能的狂熱追求還擴展到了Android SDK的其餘部分。例如:佈局

  Android SDK大量使用XML來定義相應佈局。然而,全部XML數據必須編譯爲二進制文件,而後才能將這些文件存儲在設備上。Android提供了一些專門的機制來處理XML數據。性能

    固然,android因爲虛擬機的限制,有了相應的性能瓶頸,所以在android 4.4時候引入art虛擬機。下節,咱們聊一聊art虛擬機。優化

相關文章
相關標籤/搜索