類加載時(shí)機(jī)
類生命周期
類加載機(jī)制
雙親委派機(jī)制的核心,ClassLoader.loadClass()
:
loadClass(String name, Boolean resolve) throws ClassNotFoundException{
//首先檢查請(qǐng)求的類是否已經(jīng)被加載過(guò)
Class c = findLoadedClass(name);
if(c == null){
try{
if(parent != null){//委派父類加載器加載
c = parent.loadClass(name, false);
}else{//委派啟動(dòng)類加載器加載
c = findBootstrapClassOrNull(name);
}
}catch(ClassNotFoundException e){
//父類加載器無(wú)法完成類加載請(qǐng)求
}
if(c == null){//本身類加載器進(jìn)行類加載
c = findClass(name);
}
}
if(resolve){
resolveClass(c);
}
return c;
}
這種委派模式保證了java基礎(chǔ)類庫(kù)或者一些基本框架只被加載一次袖扛,保證資源的共享散吵,不浪費(fèi)資源