JVM體系結(jié)構(gòu)目的和原理
JVM體系結(jié)構(gòu)由五部分組成,分別是寄存器、棧、廢區(qū)收集堆、存儲(chǔ)區(qū)和指令集,這五部分是Java虛擬機(jī)的邏輯成份,不依賴任何實(shí)現(xiàn)技術(shù)或組織方式,但它們的功能必須在真實(shí)機(jī)器上以某種方式實(shí)現(xiàn)。
JVM體系結(jié)構(gòu)目的和原理
Java的設(shè)計(jì)目的是應(yīng)用于當(dāng)前使用日益廣泛、影響日益擴(kuò)大的互連網(wǎng)絡(luò)。這是一個(gè)異構(gòu)平臺(tái)環(huán)境,可能存在多種不機(jī)型,如Intel公司的x86系列,Apple/IBM/Motorola公司的PowerPC機(jī)等等。每一種機(jī)型都有其特定的中央處理機(jī)(CPU)芯片,各芯片的處理過程是不同的。因而通用軟件通常需要為每一種類型的機(jī)器特別編寫版本,以保證正確運(yùn)行。為了克服這一困難,實(shí)現(xiàn)語言的通用性和易移植性,Java的設(shè)計(jì)者采取的方法是選擇一種機(jī)器作為編譯的目標(biāo)機(jī),再將編譯結(jié)果在其它機(jī)型上解釋執(zhí)行。但選中的目標(biāo)機(jī)并非上述任何一種實(shí)用機(jī)型,而是一個(gè)假設(shè)的處理機(jī)平臺(tái),稱為Java虛擬機(jī)JVM(JavaVirtualMachine)。
那么,什么是Java虛擬機(jī)呢?
我們可以把它定義為:運(yùn)行編譯生成的Java目標(biāo)代碼(即.class類文件)的計(jì)算機(jī)的實(shí)現(xiàn)。JVM體系結(jié)構(gòu)實(shí)際上是建立在實(shí)際處理機(jī)基礎(chǔ)上的假想計(jì)算機(jī)。這一假想機(jī)可以通過軟件仿真實(shí)現(xiàn),也可以通過硬件實(shí)現(xiàn)。鑒于目前大多數(shù)Java虛擬機(jī)還是用軟件方法實(shí)現(xiàn)的,我們這里介紹的內(nèi)容也多基于軟件實(shí)現(xiàn)。
Java編譯器產(chǎn)生的字節(jié)碼由JVM指令構(gòu)成,而JVM是虛設(shè)的,不接近于任何一種實(shí)用機(jī)型,這樣,一方面編譯結(jié)果具有平臺(tái)中立性,不同機(jī)型的解釋器都可以將字節(jié)碼文件轉(zhuǎn)換為本機(jī)型CPU芯片的適宜機(jī)器碼來執(zhí)行。對(duì)JVM這一層次而言,操作系統(tǒng)和硬件層都是透明的,用戶編寫的Java程序,可以在任何平臺(tái)上運(yùn)行而無需修改。另一方面,編譯生成的字節(jié)碼接近源生碼(nativecode),可以在任何硬件平臺(tái)上以較高速度解釋運(yùn)行,實(shí)現(xiàn)較高的效率。這樣,Java通過虛擬機(jī)JVM來試圖達(dá)到分布式系統(tǒng)的兩個(gè)相抵觸的重要特性:易移植性和高效性之間的平衡和協(xié)調(diào)。
接著,我們進(jìn)一步了解一下JVM體系結(jié)構(gòu),包括JVM的指令集、操作碼和操作數(shù)語法以及取值范圍等。
【編輯推薦】
- Java虛擬機(jī)概念及體系結(jié)構(gòu)
- 簡(jiǎn)單介紹Inside JVM體系結(jié)構(gòu)
- 深入Java虛擬機(jī):JVM中的Stack和Heap
- Java虛擬機(jī)發(fā)展回顧 為跨平臺(tái)而生
- Java虛擬機(jī)(JVM)中的內(nèi)存設(shè)置詳解




















