java類的加載順序是什么

小億
82
2024-08-12 09:26:36
欄目: 編程語言

當(dāng)一個(gè)Java類被加載到內(nèi)存中時(shí),它經(jīng)歷以下幾個(gè)階段的加載順序:

  1. 加載階段(Loading):加載階段是指將類的二進(jìn)制數(shù)據(jù)加載到JVM中的階段。在這個(gè)階段,類加載器會(huì)通過類的全限定名(Fully Qualified Name)來查找類的二進(jìn)制文件,并將其加載到內(nèi)存中。

  2. 驗(yàn)證階段(Verification):在驗(yàn)證階段,虛擬機(jī)會(huì)驗(yàn)證加載的類的二進(jìn)制數(shù)據(jù)是否符合JVM規(guī)范,以防止類的二進(jìn)制文件被惡意篡改或損壞。

  3. 準(zhǔn)備階段(Preparation):在準(zhǔn)備階段,虛擬機(jī)會(huì)為類的靜態(tài)變量分配內(nèi)存空間,并為這些靜態(tài)變量設(shè)置初始值(通常是默認(rèn)值)。

  4. 解析階段(Resolution):在解析階段,虛擬機(jī)會(huì)將類的符號(hào)引用轉(zhuǎn)換為直接引用,以便能夠正確地訪問類的方法和字段。

  5. 初始化階段(Initialization):在初始化階段,虛擬機(jī)會(huì)執(zhí)行類構(gòu)造器(即類的方法),來對(duì)類進(jìn)行初始化操作,例如對(duì)靜態(tài)變量進(jìn)行賦值,執(zhí)行靜態(tài)代碼塊等。

總的來說,Java類的加載順序是:加載階段 -> 驗(yàn)證階段 -> 準(zhǔn)備階段 -> 解析階段 -> 初始化階段。

0