JVM的類加載子系統(tǒng)負(fù)責(zé)加載相關(guān)的類席镀,加載類是JVM中類加載器的功能和職責(zé)夏漱。
首先明確下JVM中的類加載器,分為以下三種:
- 啟動(dòng)類加載器(Bootstrap ClassLoader)
默認(rèn)負(fù)責(zé)加載JAVA_HOME\lib下的類挂绰,同時(shí)也可以通過參數(shù)-Xbootclasspath指定,指定后啟動(dòng)類加載器會(huì)加載指定路徑的類交播,但是前提是路徑中的類符合虛擬機(jī)規(guī)范。 - 擴(kuò)展類加載器(Extension ClassLoader)
負(fù)責(zé)加載JAVA_HOME\lib\ext下的類秦士。 - 應(yīng)用程序類加載器(Application ClassLoader)
負(fù)責(zé)加載用戶路徑(classpath)下的的類庫。
以上的三種類加載器伍宦,在邏輯上有父子關(guān)系,即應(yīng)用程序類加載器的父加載器是拓展類加載器关贵,拓展類加載器的父加載器是啟動(dòng)類加載器卖毁。還需要明確一點(diǎn)揖曾,這里的父子關(guān)系不是java中類繼承的父子關(guān)系亥啦,而是子加載器持有一個(gè)表示父加載器的引用指向了父加載器,說直白點(diǎn)就是奴拦,子加載器中定義了一個(gè)叫父加載器的變量,然后指向它的父加載器错妖。