看视频时,类加载器没太理解,现在再整理下几个要点
?
類加載器負(fù)責(zé)把類加載到j(luò)ava虛擬機(jī)即JVM中,指定類的名稱,類加載器就會(huì)定位這個(gè)類的定義,每一個(gè)java類必須由類加載器加載。
當(dāng)啟動(dòng)JVM的時(shí)候,我們可以使用三個(gè)類加載器:引導(dǎo)類加載器、擴(kuò)展類加載器、應(yīng)用程序類加載器
1.引導(dǎo)類加載器僅僅負(fù)責(zé)加載核心的Java庫(kù),比如位于<JAVA_HOME>/jre/lib 目錄下的vm.jar,core.jar。這個(gè)類加載器,是JVM核心部分,是用native代碼寫成的。
2. 擴(kuò)展類加載器負(fù)責(zé)加載擴(kuò)展路徑下的代碼,一般位于<JAVA_HOME>/jre/lib/ext? 或者通過java.ext.dirs 這個(gè)系統(tǒng)屬性指定的路徑下的代碼。這個(gè)類加載器是由sun.misc.Launcher$ExtClassLoader 實(shí)現(xiàn)的。
3.應(yīng)用程序類加載器負(fù)責(zé)加載java.class.path(映射系統(tǒng)參數(shù) CLASSPATH的值) 路徑下面的代碼,這個(gè)類加載器是由 sun.misc.Launcher$AppClassLoader 實(shí)現(xiàn)的。
當(dāng)處理類加載器時(shí),父委托模式是一個(gè)需要理解的關(guān)鍵概念,它規(guī)定:類加載器在加載自己的類之前,可以委托先加載父類,父類加載器可以是客戶化的類加載器或引導(dǎo)類加載器。但是有一點(diǎn)很重要,類加載器只能委托自己的父類加載器,而不能是子類加載器,即只能向上不能向下。
自定義類加載器:雖然在絕大多數(shù)情況下,系統(tǒng)默認(rèn)提供的類加載器實(shí)現(xiàn)已經(jīng)可以滿足需求。但是在某些情況下,您還是需要為應(yīng)用開發(fā)出自己的類加載器。比如您的應(yīng)用通過網(wǎng)絡(luò)來傳輸?Java?類的字節(jié)代碼,為了保證安全性,這些字節(jié)代碼經(jīng)過了加密處理。這個(gè)時(shí)候您就需要自己的類加載器來從某個(gè)網(wǎng)絡(luò)地址上讀取加密后的字節(jié)代碼,接著進(jìn)行解密和驗(yàn)證,最后定義出要在?Java?虛擬機(jī)中運(yùn)行的類來。
轉(zhuǎn)載于:https://www.cnblogs.com/dongdong230/p/4183118.html
總結(jié)
以上是生活随笔為你收集整理的看视频时,类加载器没太理解,现在再整理下几个要点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows 下 MyEclipse
- 下一篇: CentOS 7安装DB2