Java的類加載過程分為以下五個步驟:
加載(Loading):通過類加載器將字節碼文件加載到內存中,并創建一個對應的Class對象。這個過程是由類加載器完成的,它會根據類的全限定名查找并讀取字節碼文件,并將其轉化為一個Class對象。
驗證(Verification):對加載的字節碼文件進行驗證,確保其符合Java語言規范。驗證過程包括文件格式驗證、元數據驗證、字節碼驗證和符號引用驗證等。
準備(Preparation):為類的靜態變量分配內存,并設置默認初始值。在這個階段,靜態變量會被賦予默認值,比如數值類型的變量被賦值為0,引用類型的變量被賦值為null。
解析(Resolution):將符號引用轉換為直接引用。符號引用是一種在編譯階段使用的,和內存地址無關的引用,而直接引用則是可以直接指向內存地址的指針、句柄或者偏移量。解析過程會將符號引用替換為直接引用,以便程序能夠直接訪問內存中的對象。
初始化(Initialization):為類的靜態變量賦予真正的初始值,并執行靜態代碼塊中的代碼。在這個階段,靜態變量會被賦予程序中指定的初值,靜態代碼塊中的代碼會被執行。同時,如果類中存在父類,則會先初始化父類。
這五個步驟構成了Java類加載的完整過程。