JVM以動態方式管理加載,鏈接和初始化類以及介面的過程。在加載過程中,JVM查找類的二進位表示並創建它。
在鏈接過程中,已加載的類被組合到JVM的運行時狀態,以便在初始化階段執行它們。JVM基本上使用存儲在運行時常量池中的符號表來進行鏈接過程。初始化包括實際執行鏈接類。
加載器類型
BootStrap
類加載器位於類加載器層次結構的頂部。它在JRE的lib目錄中加載標準JDK類。
Extension
類加載器位於類加載器層次結構的中間,是引導類加載器的直接子項,並將類加載到JRE的lib/ext
目錄中。
Application
類加載器位於類加載器層次結構的底部,是應用程式類加載器的直接子級。它加載CLASSPATH ENV
變數指定的jar和類。
鏈接
鏈接過程包括以下三個步驟 -
- 驗證 - 這由位元組碼驗證程式完成,以確保生成的
.class
檔(位元組碼)有效。如果不是,則拋出錯誤並且鏈接過程停止。 - 準備 - 將記憶體分配給類的所有靜態變數,並使用默認值初始化它們。
- 分解 - 所有符號記憶體引用都替換為原始引用。為此,使用類的方法區域的運行時常量記憶體中的符號表。
初始化
這是類加載過程的最後階段,它為靜態變數分配原始值並執行靜態塊。
上一篇:
Java虛擬機(JVM)架構
下一篇:
Java虛擬機(JVM)運行時數據區