Java虛擬機器(JVM)類載入器


JVM以動態方式管理載入,連結和初始化類以及介面的過程。在載入過程中,JVM查詢類的二進位制表示並建立它。

在連結過程中,已載入的類被組合到JVM的執行時狀態,以便在初始化階段執行它們。JVM基本上使用儲存在執行時常數池中的符號表來進行連結過程。初始化包括實際執行連結類。

載入器型別

BootStrap類載入器位於類載入器層次結構的頂部。它在JRE的lib目錄中載入標準JDK類。

Extension類載入器位於類載入器層次結構的中間,是引導類載入器的直接子項,並將類載入到JRE的lib/ext目錄中。

Application類載入器位於類載入器層次結構的底部,是應用程式類載入器的直接子級。它載入CLASSPATH ENV變數指定的jar和類。

連結

連結過程包括以下三個步驟 -

  • 驗證 - 這由位元組碼驗證程式完成,以確保生成的.class檔案(位元組碼)有效。如果不是,則丟擲錯誤並且連結過程停止。
  • 準備 - 將記憶體分配給類的所有靜態變數,並使用預設值初始化它們。
  • 分解 - 所有符號記憶體參照都替換為原始參照。為此,使用類的方法區域的執行時常數儲存器中的符號表。

初始化

這是類載入過程的最後階段,它為靜態變數分配原始值並執行靜態塊。