類的加載
1.把類的.class文件中的數(shù)據(jù)讀入到內(nèi)存中流昏,通常是創(chuàng)建一個字節(jié)數(shù)組讀入.class文件
2.然后產(chǎn)生與所加載類對應(yīng)的Class對象。加載完成后殃饿,Class對象還不完整犁柜,所以此時的類還不可用川梅。
3.當(dāng)類被加載后就進入連接階段旺坠,這一階段包括驗證乔遮、準(zhǔn)備(為靜態(tài)變量分配內(nèi)存并設(shè)置默認(rèn)的初始值)和解析(將符號引用替換為直接引用)三個步驟
類的加載是由類加載器完成的,類加載器包括:
根加載器(BootStrap)取刃、
擴展加載器(Extension)蹋肮、
系統(tǒng)加載器(System)、
用戶自定義類加載器(java.lang.ClassLoader的子類)
Bootstrap:一般用本地代碼實現(xiàn)璧疗,負(fù)責(zé)加載JVM基礎(chǔ)核心類庫(rt.jar)坯辩;
Extension:從java.ext.dirs系統(tǒng)屬性所指定的目錄中加載類庫,它的父加載器是Bootstrap崩侠;
System:又叫應(yīng)用類加載器漆魔,其父類是Extension。它是應(yīng)用最廣泛的類加載器却音。
它從環(huán)境變量classpath或者系統(tǒng)屬性java.class.path所指定的目錄中記載類改抡,是用戶自定義加載器的默認(rèn)父加載器。