Java 虛擬機
一、Java 虛擬機簡介
Java 虛擬機是整個Java 平臺的基石,是Java 技術用以實現硬件無關與操作系統無關的關鍵部分,是Java 語言生成出極小體積的編譯代碼的運行平臺,是保障用戶機器免于惡意代碼損害的保護屏障。Java 虛擬機可以看作是一臺抽象的計算機。如同真實的計算機那樣,它有自己的指令集以及各種運行時內存區域。
當我們說“Java虛擬機”的時候,可能指以下三種不同的東西:
(1) 抽象規范。
(2) 一個具體的虛擬機實現。
(3) 一個運行中的虛擬機實例。
Java虛擬機抽象規范僅僅是個概念,不同的廠商有著不同的具體實現。當運行一個Java程序的同時,也就在運行一個Java虛擬機實例。每個Java程序都運行于某個具體的Java虛擬機實現的實例上。
二、Java 虛擬機體系結構
下面是JVM規范定義的標準結構:
Java虛擬機負責裝載class文件并執行。每個Java虛擬機都有一個類裝載器子系統,它根據給定的全限定名來裝載class文件(類或接口)。每個Java虛擬機都有一個執行引擎,它負責執行那些包含在被裝載類的方法中的指令。當Java虛擬機運行一個程序時,它需要內存來存儲許多東西,如字節碼,從已裝載的class文件中得到的其他信息,程序創建的對象,傳遞給方法的參數,返回值,局部變量,以及運算的中間結果等等,Java虛擬機把這些東西都組織到內存空間中,便于管理。
注意:Java 虛擬機與Java 語言并沒有必然的聯系,它只與特定的二進制文件格式——Class 文件格式所關聯,Class 文件中包含了Java 虛擬機指令集(或者稱為字節碼、Bytecodes)和符號表,還有一些其他輔助信息。