JVM載入class檔案的原理
阿新 • • 發佈:2018-12-19
- 原始檔:編寫Java原始檔(我們也稱之為原始碼檔案),它的副檔名為.java;
- 編譯:然後通過編譯器把原始檔編譯成位元組碼檔案,位元組碼副檔名為.class;
- 執行:最後使用直譯器來執行位元組碼檔案。
類載入的主要步驟:
當程式要使用某個類時,如果該類還未被載入到記憶體中,則系統會通過載入,連線,初始化三步來實現對這個類進行初始化。
- 載入
通過類載入器將class檔案讀入記憶體,併為之建立一個Class物件。
- 連線
檢查 檢查待載入檔案的正確性
準備 負責為類的靜態成員分配記憶體,並設定預設初始化值
解析 將類的二進位制資料中的符號引用替換為直接引用(這一步是可選的)
- 初始化
對靜態變數和靜態程式碼塊執行初始化操作
類載入器的組成:
- Bootstrap ClassLoader 系統類載入器
負責Java核心類的載入
比如System,String等。在JDK中JRE的lib目錄下rt.jar檔案中
- Extension ClassLoader 擴充套件類載入器
負責JRE的擴充套件目錄中jar包的載入。
在JDK中JRE的lib目錄下ext目錄
- AppClassLoader負責載入應用類
classpath指定的目錄或jar包中的類