Java背後的秘密之虛擬機器的組成組件02

來源:互聯網
上載者:User
        想要深入學習Java虛擬機器的知識,首先得看一看虛擬機器的組成組件。它有哪幾部分構成,各部分都有什麼作用與聯絡。我們都知道Java虛擬機器是類比了一台硬體電腦,可以想象成Java虛擬機器就是一台硬體電腦,它擁有記憶體、cpu、輸入/輸出、網卡等。下面這張圖片展示了虛擬機器的組成:

        Java一推出,就打著跨平台的旗號。其原理就是將目標檔案編譯成Java位元組碼檔案,通過虛擬機器去解釋執行,最終會被編譯成目標系統對應的指令。比如Windows、Linux、Mac OS平台上都有SUN實現的虛擬機器,但是每個平台去解釋其位元組碼檔案時,位元組碼檔案都是一樣的,只是最終產生的底層機器指令不一樣。由此可見,Java跨平台是令人可笑的,但是這種思想卻是偉大的。這也是很多人抱怨Java語言效率低的問題源頭。

中,JVM主要包括兩個子系統和兩個組件。兩個子系統分別是CLASS LOADER(類裝載器)子系統和EXECUTION ENGINE(執行引擎)子系統。兩個組件分別是RUNTIME DATA AREA(運行時資料區域)和NATIVE INTERFACE(本地介面)組件。

CLASS LOADER子系統:這個可以想象成硬體電腦中的I/O裝置,根據給定的全限定名類名(如java.lang.Object)來裝載class檔案的內容到RUNTIME DATA AREA中的METHOD AREA(方法地區)。Java程式員可以繼承java.lang.ClassLoader類來寫自己的ClassLoader。 

EXECUTION ENGINE子系統:這個可以想象成一台電腦的CPU,執行Java編譯後的.class檔案中的指令。JVM有很多種實現,如SUN公司的JDK、IBM的JDK、開源的opensdk、Android的dalvik虛擬機器。任何JVM的實現JDK核心都是EXECUTION ENGINE子系統,不同JDK的好壞主要就是取決於各自實現的EXECUTION ENGINE的好壞。

NATIVE INTERFACE組件:這個可以想象成電腦中的網卡,做過Android的可能知道JNI,本地介面組件就是允許Java去調用底層C、C++的一些實現,與本地的一些類庫去互動。當調用native方法的時候,就進入了一個全新的並且不再受Java虛擬機器限制的世界,所以也很容易出現JVM無法控制的native heap OutOfMemory。

RUNTIME DATA AREA組件:這個可以想象成電腦中的記憶體,也是我們常說的JVM記憶體,它通常分為5個部分: 
1.METHOD AREA方法區:被裝載的Java類資訊,也就是位元組碼資訊存放於此; 
2.JAVA STACK棧空間:用於存放每個啟動並執行Java線程的局部變數、運算元、中間結果、以及執行內容資訊(JDK5.0之前大小為256K,之後為1M); 
3.NATIVE METHOD STACK本地方法棧:儲存本地方法進入地區地址; 
4.HEAP堆空間:用來存放Java執行個體對象; 
5.PROGRAM COUNTER REGISTER程式計數器:每一個Java線程都有它自己的PC寄存器,也是該線程啟動時建立的。PC寄存器的內容總是指向下一條將被執行指令的地址,這裡的地址可以是一個本地指標,也可以是在方法區中相對應於該方法起始指令的位移量; 

以上5部分只有HEAP和METHOD AREA是被所有線程共用使用的;而其他三個都是以線程為粒度的,每個線程獨自擁有自己的部分。

轉載來源www.boobooke.com/bbs->J2EE專區->藍山作品—Java背後的秘密(匯總) 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.