
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、虛擬機(jī)為HotSpot1.類加載器類加載器一般只有3種(除開自己定義的)分別為:1.Bootstrap ClassLoader:根加載器2.Extension ClassLoader:擴(kuò)展加載器3.System ClassLoader:系統(tǒng)加載器以下我們將對(duì)這3種加載器進(jìn)行分析:Bootstrap ClassLoader 根加載器Bootstrap ClassLoader(根加載器)是由C+編寫的加載器,負(fù)責(zé)加載/lib文件夾下的類,或者被-Xbootclasspath參數(shù)指定的路徑.代碼:打印被跟加載器加載的類public class Test01 public static void ma
2、in(String args) for (URL url : sun.misc.Launcher.getBootstrapClassPath().getURLs() / 遍歷、輸出根類加載器加載的全部URL System.out.println(url.toExternalForm();結(jié)果:file:/C:/Program%20Files/Java/jdk1.8.0_202/jre/lib/resources.jar file:/C:/Program%20Files/Java/jdk1.8.0_202/jre/lib/rt.jar file:/C:/Program%20Files/Java/
3、jdk1.8.0_202/jre/lib/sunrsasign.jar file:/C:/Program%20Files/Java/jdk1.8.0_202/jre/lib/jsse.jar file:/C:/Program%20Files/Java/jdk1.8.0_202/jre/lib/jce.jar file:/C:/Program%20Files/Java/jdk1.8.0_202/jre/lib/charsets.jar file:/C:/Program%20Files/Java/jdk1.8.0_202/jre/lib/jfr.jar可以看出Bootstrap ClassLoad
4、er加載的文件全部都位于lib包下.Extension ClassLoader 擴(kuò)展加載器Extension ClassLoader 擴(kuò)展加載器由sun.misc.Launcher$ExtClassLoader實(shí)現(xiàn),主要負(fù)責(zé)加載/lib/ext目錄下的文件,或者java.ext.dirs指定的庫(kù).代碼:public class Test02 public static void main(String args) throws ClassNotFoundException /注:這個(gè)類位于ext目錄下localedata.jar包Class aClass =Class.forName(sun.
5、util.resources.ar.CalendarData_ar); ClassLoader loader = aClass.getClassLoader(); System.out.println(loader);結(jié)果:sun.misc.Launcher$ExtClassLoader74a14482可以看出打印的類加載為ExtClassLoader.System ClassLoader 系統(tǒng)加載器(應(yīng)用程序類加載器)System ClassLoader 系統(tǒng)加載器由sun.misc.Launcher$AppClassLoader實(shí)現(xiàn),主要加載用戶指定的classpath下的類(工程項(xiàng)目的c
6、lasspath下的類).代碼:public class Test03 public static void main(String args) throws ClassNotFoundException /獲取本類的加載器Class clazz = Class.forName(com.test.ClassLoader.Test03); System.out.println(clazz.getClassLoader();結(jié)果:sun.misc.Launcher$AppClassLoader18b4aac22.雙親委托public class Test04 public static void
7、main(String args) throws ClassNotFoundException ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); System.out.println(子類+systemClassLoader);ClassLoader parent1 = systemClassLoader.getParent(); System.out.println(系統(tǒng)加載器的父類+parent1); ClassLoader parent2 = parent1.getParent(); System.ou
8、t.println(擴(kuò)展加載器的父類+parent2);上圖顯示加載器之間的層次關(guān)系,除了根加載器沒有父類以外,每個(gè)加載器必須有自己的父類. 代碼:結(jié)果:子類sun.misc.Launcher$AppClassLoader18b4aac2系統(tǒng)加載器的父類sun.misc.Launcher$ExtClassLoader1b6d3586 擴(kuò)展加載器的父類null其中,我們可以看見,擴(kuò)展加載器的父類為null,為什么,在ClassLoader的源碼中有這樣的一句話./*Returns the parent class loader for delegation. Some implementatio
9、ns mayuse null to represent the bootstrap class loader. This methodwill return null in such implementations if this class loadersparent is the bootstrap class loader.*/大概意思就是當(dāng)返回bootstrap時(shí),用null代替,所以可以解釋為什么擴(kuò)展類加載器的父類為null. 雙親委托假設(shè)我們的自定義類加載器的父類為系統(tǒng)類加載器,當(dāng)自定義加載器接收到需要加載類的命令時(shí),他并不 會(huì)開始加載類,而是去尋找自己的父類,讓父類去加載,但是,當(dāng)父類接收到時(shí),他也會(huì)重復(fù)這一步,去尋找他 自己的父類,直到根加載器,如果這時(shí),根加載器可以加載,他將加載,無(wú)法加載,他的子類才會(huì)開始嘗試加載, 其中又一個(gè)子類加載成功就退出,所有子類都無(wú)法加載成功,就會(huì)報(bào)錯(cuò).如果我們自己創(chuàng)建一個(gè)java.lang.Integr包,使用類加載器去加載,在雙親委托機(jī)制下,他將永遠(yuǎn)不會(huì)加載成
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度衛(wèi)生院聘用合同模板(社區(qū)健康服務(wù)中心)
- 二零二五年度產(chǎn)學(xué)研合作高級(jí)人才引進(jìn)協(xié)議書
- 二零二五年度農(nóng)村土地承包經(jīng)營(yíng)權(quán)流轉(zhuǎn)與農(nóng)業(yè)廢棄物資源化利用合同
- 2025年度智能家居系統(tǒng)銷售代理合同標(biāo)準(zhǔn)范本
- 二零二五年度分公司與總公司數(shù)據(jù)安全合作協(xié)議
- 中國(guó)康養(yǎng)陪護(hù)機(jī)器人市場(chǎng)競(jìng)爭(zhēng)格局及前景發(fā)展動(dòng)態(tài)預(yù)測(cè)報(bào)告2025-2031年
- 園林實(shí)習(xí)資料員年終總結(jié)
- 軍用物品維修合同范本
- 2025至2031年中國(guó)跪裸女工藝品行業(yè)投資前景及策略咨詢研究報(bào)告
- 老人雇傭保姆合同范本
- 2025年黑龍江職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)必考題
- 《ABO血型鑒定》課件
- 蘇教版五年級(jí)下冊(cè)數(shù)學(xué)計(jì)算題大全1200道帶答案
- 計(jì)算機(jī)行業(yè)人工智能系列深度報(bào)告:deepseek研究框架-國(guó)海證券-20250214
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 三年級(jí)上冊(cè)數(shù)學(xué)估算練習(xí)200題
- 2024年山東司法警官職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 鋼棧橋施工方案型鋼
- PySide學(xué)習(xí)教程
- 事業(yè)單位綜合基礎(chǔ)知識(shí)考試題庫(kù) 綜合基礎(chǔ)知識(shí)考試題庫(kù).doc
- 譯林初中英語(yǔ)教材目錄
評(píng)論
0/150
提交評(píng)論