JVM(一)— 什麼是JVM
Java程式執行機制
計算機高階語言按程式的執行方式分為編譯型和解釋型兩種。
編譯器
計算機不能直接理解任何除機器語言以外的語言,所以必須要把程式設計師所寫的程式語言翻譯成機器語言,計算機才能執行程式。將其他語言翻譯成機器語言的工具,被稱為編譯器。
解釋性語言
解釋性語言編寫的程式不進行預先編譯,以文字方式儲存程式程式碼。在釋出程式時,看起來省了道編譯工序。但是,在執行程式的時候,解釋性語言必須先解釋再執行。比如解釋性BasiC語言,其專用的直譯器在執行Basic程式時,會逐條讀取解釋每個語句,這個其實就是一個編譯過程,然後再執行。一般來說,現有的解釋性語言都是採用的逐行解釋一句,執行一句這樣的方式來構建的。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。
編譯型語言
程式在執行之前需要一個專門的編譯過程,把程式編譯成 為機器語言的檔案,執行時不需要重新翻譯,直接使用編譯的結果就行了。程式執行效率高,依賴編譯器,跨平臺性差些。如C、C++、Delphi等。
Java程式執行機制
Java語言是一種特殊的高階語言,既有解釋性語言的特徵,也有編譯語言的特徵,Java程式經過先編譯後翻譯兩個步驟。
Java程式——-經過編譯———-生成機器碼,與平臺無關的位元組碼檔案—–>(*.class檔案)——由Java直譯器執行。
JVM
Java語言裡負責解釋執行位元組碼檔案的是Java虛擬機器,即JVM。
Java虛擬機器包括一套位元組碼指令集、一組暫存器、一個棧、一個垃圾回收堆和一個儲存方法域。
JVM的設計目標是提供一個基於抽象規格描述的計算機模型,為解釋程式開發人員提範的任何系統上執行。
JVM定義了控制Java程式碼解釋執行和具體實現的五種規格,它們是:
*JVM指令系統
*JVM暫存器
*JVM棧結構
*JVM碎片回收堆
*JVM儲存區