Java類加載過程
首先是加載過程(Loading),它是 Java 將字節碼數據從不同的數據源讀取到 JVM 中,并映射為 JVM 認可的數據結構(Class 對象),這里的數據源可能是各種各樣的形態,比如 jar 文件,class 文件,甚至是網絡數據源等;如果輸入數據不是 ClassFile 的結構,則會拋出 ClassFormatError。加載階段是用戶參與的階段,我們可以自定義類加載器,去實現自己的類加載過程。
第二階段是連接(Linking),這是核心的步驟,簡單說是把原始的類定義信息平滑地轉入 JVM 運行的過程中。這里可進一步細分成三個步驟:1,驗證(Verification),這是虛擬機安全的重要保障,JVM 需要核驗字節信息是符合 Java 虛擬機規范的,否則就被認為是 VerifyError,這樣就防止了惡意信息或者不合規信息危害 JVM 的運行,驗證階段有可能觸發