|
java類的加載過程 jvm的核心類加載器 什么是雙親委派 啟動jvm.dll文件啟動java虛擬機(jī)---》創(chuàng)建一個類加載器(c++)---》c++調(diào)用java代碼啟動sun.miscLauncher實(shí)列,然后通過這個實(shí)例啟動很多java類加載器---》獲取自己的加載器classloder,是AppClassLoder的實(shí)例(launcher.getClassLoder())---》運(yùn)行指定的類文件---》調(diào)用main方法啟動---》運(yùn)行程序---》jvm銷毀
類的加載:驗(yàn)證,準(zhǔn)備,解析,初始化jvm,加載使用 驗(yàn)證:驗(yàn)證字節(jié)碼的準(zhǔn)確性 準(zhǔn)備:給類的靜態(tài)變量分配內(nèi)存,并賦予默認(rèn)值 解析:將符號引用轉(zhuǎn)變?yōu)橹苯右茫ㄖ赶驍?shù)據(jù)存儲在內(nèi)存中的指針或句柄) 初始化:對類的靜態(tài)變量初始化為指定的值,執(zhí)行靜態(tài)代碼塊 運(yùn)行時常量池,類型信息,字段信息,方法信息,類加載器的引用,對應(yīng)class實(shí)例的引用
引導(dǎo)類加載器:負(fù)責(zé)加載支撐jvm運(yùn)行的位于jre的lib目錄下的核心類庫,不如rt。jar,charsets.jar等 擴(kuò)展類加載器:負(fù)責(zé)加載支撐jvm運(yùn)行的位于jre的lib下的ext擴(kuò)展目錄下的jar包 應(yīng)用程序類加載器:負(fù)責(zé)加載classPash路徑下的jar包,主要是加載自己寫的類 自定義類加載器:負(fù)責(zé)加載用戶自定義路徑下的類包
|
|
|