Java 類的加載過程
2023-02-25 23:54 作者:銀河婉轉(zhuǎn)三千曲 | 我要投稿
Java類的加載過程可以分為以下三個步驟:
1.加載(Loading):在這個階段,Java虛擬機會查找并加載字節(jié)碼文件,并創(chuàng)建對應的Class對象。加載階段有三種方式:從本地文件系統(tǒng)中加載class文件、從JAR包中加載class文件、以及通過網(wǎng)絡加載class文件。
2.連接(Linking):連接階段包括驗證、準備和解析三個步驟。首先,Java虛擬機會驗證字節(jié)碼文件是否符合規(guī)范。然后,Java虛擬機會為類的靜態(tài)變量分配內(nèi)存并設置默認值。最后,Java虛擬機會解析類的符號引用,即將類、接口、字段和方法的符號引用轉(zhuǎn)換為直接引用。
3.初始化(Initialization):在這個階段,Java虛擬機會執(zhí)行類的靜態(tài)初始化代碼塊,即執(zhí)行類中聲明的static關鍵字修飾的變量或方法,或者執(zhí)行類中的靜態(tài)代碼塊。如果父類還未初始化,則先觸發(fā)父類的初始化。在這個階段中,Java虛擬機會按照程序員設定的順序依次初始化類的靜態(tài)成員變量和靜態(tài)代碼塊。
需要注意的是,這些步驟并不是完全獨立的,例如,在初始化階段可能會觸發(fā)連接階段的某些操作。此外,在不同的Java虛擬機實現(xiàn)中,類的加載過程可能會有所不同,但是都會遵循類加載器委托機制和雙親委派模型。