1. 程式人生 > >簡介JVM原理和過程

簡介JVM原理和過程

什麼是JVM呢?

JVM是Java Virtual Machine(Java虛擬機器)的縮寫,JVM是一種用於計算裝置的規範,它是一個虛構出來的計算機,是通過在實際的計算機上模擬模擬各種計算機功能來實現的。Java虛擬機器包括一套位元組碼指令集、一組暫存器、一個棧、一個垃圾回收堆和一個儲存方法域。 JVM遮蔽了與具體作業系統平臺相關的資訊,使Java程式只需生成在Java虛擬機器上執行的目的碼(位元組碼),就可以在多種平臺上不加修改地執行。JVM在執行位元組碼時,實際上最終還是把位元組碼解釋成具體平臺上的機器指令執行。

 

JVM的原理?

JVM是java的核心和基礎,在java編譯器和os平臺之間的虛擬處理器。它是一種利用軟體方法實現的抽象的計算機基於下層的作業系統和硬體平臺,可以在上面執行java的位元組碼程式。java編譯器只要面向JVM,生成JVM能理解的程式碼或位元組碼檔案。Java原始檔經編譯成位元組碼程式,通過JVM將每一條指令翻譯成不同平臺機器碼,通過特定平臺執行。

 

JVM將整個類載入過程劃分為了三個步驟:

(1)裝載
  裝載過程負責找到二進位制位元組碼並載入至JVM中,JVM通過類名、類所在的包名通過ClassLoader來完成類的載入,同樣,也採用以上三個元素來標識一個被載入了的類:類名+包名+ClassLoader例項ID。
(2)連結
  連結過程負責對二進位制位元組碼的格式進行校驗、初始化裝載類中的靜態變數以及解析類中呼叫的介面、類。在完成了校驗後,JVM初始化類中的靜態變數,並將其值賦為預設值。最後一步為對類中的所有屬性、方法進行驗證,以確保其需要呼叫的屬性、方法存在,以及具備應的許可權(例如public、private域許可權等),會造成NoSuchMethodError、NoSuchFieldError等錯誤資訊。
(3)初始化
  初始化過程即為執行類中的靜態初始化程式碼、構造器程式碼以及靜態屬性的初始化,在四種情況下初始化過程會被觸發執行:呼叫了new;反射呼叫了類中的方法;子類呼叫了初始化;JVM啟動過程中指定的初始化類。