java类加载器_JAVA类加载器
虛擬機(jī)設(shè)計(jì)團(tuán)隊(duì)把加載動(dòng)作放到 JVM 外部實(shí)現(xiàn),以便讓應(yīng)用程序決定如何獲取所需的類,JVM 提 供了 3 種類加載器:
1. 啟動(dòng)類加載器(Bootstrap ClassLoader)
負(fù)責(zé)加載 JAVA_HOMElib 目錄中的,或通過(guò)-Xbootclasspath 參數(shù)指定路徑中的,且被虛擬機(jī)認(rèn)可(按文件名識(shí)別,如 rt.jar)的類。
2. 擴(kuò)展類加載器(Extension ClassLoader)
負(fù)責(zé)加載 JAVA_HOMElibext 目錄中的,或通過(guò) java.ext.dirs 系統(tǒng)變量指定路徑中的類庫(kù)。
3. 應(yīng)用程序類加載器(Application ClassLoader)
負(fù)責(zé)加載用戶路徑(classpath)上的類庫(kù)。 JVM 通過(guò)雙親委派模型進(jìn)行類的加載,當(dāng)然我們也可以通過(guò)繼承 java.lang.ClassLoader實(shí)現(xiàn)自定義的類加載器。
4. 雙親委派
當(dāng)一個(gè)類收到了類加載請(qǐng)求,他首先不會(huì)嘗試自己去加載這個(gè)類,而是把這個(gè)請(qǐng)求委派給父類去完成,每一個(gè)層次類加載器都是如此,因此所有的加載請(qǐng)求都應(yīng)該傳送到啟動(dòng)類加載其中,只有當(dāng)父類加載器反饋?zhàn)约簾o(wú)法完成這個(gè)請(qǐng)求的時(shí)候(在它的加載路徑下沒(méi)有找到所需加載的Class),子類加載器才會(huì)嘗試自己去加載。 采用雙親委派的一個(gè)好處是比如加載位于 rt.jar 包中的類 java.lang.Object,不管是哪個(gè)加載器加載這個(gè)類,最終都是委托給頂層的啟動(dòng)類加載器進(jìn)行加載,這樣就保證了使用不同的類加載器最終得到的都是同樣一個(gè) Object 對(duì)象。
總結(jié)
以上是生活随笔為你收集整理的java类加载器_JAVA类加载器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 卡巴斯基授权许可文件_安全许可证的申请流
- 下一篇: 指针变量和引用变量的区别_指针Ⅰ--变量