国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > Java > 正文

jvm類加載器基礎(chǔ)解析

2024-07-13 10:15:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

【類加載器簡(jiǎn)介】

類加載器(classloader)用于將類的class文件加載到JVM虛擬機(jī)。JVM有三種加載器,引導(dǎo)類加載器器(bootstrapclassloader)、擴(kuò)展類加載器(extensionsclassloader)和應(yīng)用類加載器(applicationclassloader),另外還可以繼承java.lang.ClassLoader類創(chuàng)建自定義加載器。
【類加載器種類】

1.引導(dǎo)類加載器(BootStrap):并不是一個(gè)Java類,采用C++語(yǔ)言編寫、內(nèi)嵌在JVM內(nèi)核里面,使用JNI(JavaNativeInterface)調(diào)用native代碼執(zhí)行。引導(dǎo)類加載器負(fù)責(zé)加載核心的Java類庫(kù),比如位JAVA_HOME/jre/lib下面的rt.jar文件,該jar文件包含一些常見(jiàn)類如:

java.lang.System java.util.HashMap 

2.擴(kuò)展類加載器(ExtClassLoader):繼承自java.lang.ClassLoader類,用于加載擴(kuò)展路徑下面的jar文件,擴(kuò)展路徑為JAVA_HOME/jre/lib/ext

3.應(yīng)用類加載器(AppClassLoader):繼承自java.lang.ClassLoader類,用來(lái)加載classpath下面的類。大笑

【類加載器的委托機(jī)制】

1.當(dāng)應(yīng)用程序需要加載一個(gè)類時(shí),會(huì)按照BootStrap、ExtClassLoader、AppClassLoader的順序,到相應(yīng)的路徑下面加載需要的類的字節(jié)碼文件。

2.我們可以把自定義的類編譯為class文件后打成jar包,放置到JAVA_HOME/jre/lib/ext路徑。類加載器加載時(shí),將使用ExtClassLoader加載器從JAVA_HOME/jre/lib/ext路徑加載,而不會(huì)使用AppClassLoader加載器到classpath下加載。

3.在按照BootStrap、ExtClassLoader、AppClassLoader順序使用類加載器,嘗試加載類都失敗之后,將拋出類找不到異常:java.lang.ClassNotFoundException

【應(yīng)用demo】

1.BootStrap:使用C++編寫、嵌入在JVM內(nèi)核、并不是一個(gè)Java類

ClassLoader loader = System.class.getClassLoader(); System.out.println(loader); //null 

2. AppClassLoader:使用AppClassLoader加載器加載classpath下面的類

ClassLoader loader = ClassLoaderTest.class.getClassLoader(); System.out.println(loader.getClass().getName()); //sun.misc.Launcher$AppClassLoader 

3.ExtClassLoader:用于加載JAVA_HOME/jre/lib/ext路徑下的Java類,一旦找到將不會(huì)到classpath加載。

編寫自定義Hello類,打成jar包進(jìn)行導(dǎo)出到C:/ProgramFiles/Java/jdk1.7.0/jre/lib/ext/excelsoft.jar路徑。

ClassLoader loader = Hello.class.getClassLoader(); System.out.println(loader.getClass().getName()); //sun.misc.Launcher$ExtClassLoader 

===============================
類加載器是一個(gè)相對(duì)比較復(fù)雜的話題,僅作入門了解!

總結(jié)

以上就是本文關(guān)于jvm類加載器基礎(chǔ)解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳东县| 余江县| 巴彦县| 江北区| 嘉荫县| 青浦区| 南开区| 札达县| 泰顺县| 巫山县| 长武县| 文成县| 麻江县| 江达县| 汽车| 根河市| 漠河县| 家居| 乐山市| 奉新县| 岢岚县| 芦山县| 崇信县| 蚌埠市| 布尔津县| 临桂县| 怀柔区| 永泰县| 绩溪县| 武乡县| 乌海市| 嘉黎县| 凤凰县| 九龙坡区| 黔西县| 开鲁县| 鄂托克前旗| 合阳县| 久治县| 乐东| 武安市|