java基礎(chǔ)---類加載機制
java 的類加載機制分三步,加載 ---連接 ---初始化
加載: 將.class文件中的二進制數(shù)據(jù)讀入到內(nèi)存中,把它存放在運行時數(shù)據(jù)區(qū)的反方法區(qū)內(nèi),然后在堆區(qū)創(chuàng)建一個java.lang.Class對象,用來封裝類在方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)。
jvm加載類二進制數(shù)據(jù)有這幾種途徑:
a: 把一個java源文件動態(tài)編譯成class文件。
b: 從一個本地文件系統(tǒng)中加載class文件。
c: 通過網(wǎng)絡(luò)下載類的.class文件。比如:applat.
d: 從Zip,jar或其它類型的歸檔文件中提取.class文件。
e: 從一個專有的數(shù)據(jù)庫中提取.class文件。
連接:包括三個過程: 驗證,準備,和解析。其中驗證主要是檢查與語法上的錯誤。準備將靜態(tài)變量賦上其類型默認值。
解析:將符號引用轉(zhuǎn)變?yōu)橹苯右谩?br /> 初始化:將靜態(tài)變量賦上初始值,執(zhí)行靜態(tài)代碼快,其順序是從上到下的順序執(zhí)行。
類加載器在加載不了類的時候,并不一定報錯,而是類在第一次主動使用的時候,才會去報加載錯誤信息。
類首次主動使用,大概有這些情況:
1:調(diào)用了類的靜態(tài)方法或變量。
2:用反射的方式創(chuàng)建對象。
加載: 將.class文件中的二進制數(shù)據(jù)讀入到內(nèi)存中,把它存放在運行時數(shù)據(jù)區(qū)的反方法區(qū)內(nèi),然后在堆區(qū)創(chuàng)建一個java.lang.Class對象,用來封裝類在方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)。
jvm加載類二進制數(shù)據(jù)有這幾種途徑:
a: 把一個java源文件動態(tài)編譯成class文件。
b: 從一個本地文件系統(tǒng)中加載class文件。
c: 通過網(wǎng)絡(luò)下載類的.class文件。比如:applat.
d: 從Zip,jar或其它類型的歸檔文件中提取.class文件。
e: 從一個專有的數(shù)據(jù)庫中提取.class文件。
連接:包括三個過程: 驗證,準備,和解析。其中驗證主要是檢查與語法上的錯誤。準備將靜態(tài)變量賦上其類型默認值。
解析:將符號引用轉(zhuǎn)變?yōu)橹苯右谩?br /> 初始化:將靜態(tài)變量賦上初始值,執(zhí)行靜態(tài)代碼快,其順序是從上到下的順序執(zhí)行。
類加載器在加載不了類的時候,并不一定報錯,而是類在第一次主動使用的時候,才會去報加載錯誤信息。
類首次主動使用,大概有這些情況:
1:調(diào)用了類的靜態(tài)方法或變量。
2:用反射的方式創(chuàng)建對象。
posted on 2007-10-25 09:42 sam.chuan.yang 閱讀(206) 評論(0) 編輯 收藏