java ClassLoader 總結(jié)

開始正式我們的ClassLoader總結(jié)分析蜕依。

ClassLoader的分類(Hot Spot JVM):

  • BootStrap ClassLoader(啟動類加載器)
  • Extension ClassLoader(擴(kuò)展類加載器)
  • Application ClassLoader(應(yīng)用程序類加載器)
  • User ClassLoader(用戶自己實(shí)現(xiàn)的加載器)

BootStrap ClassLoader

C++實(shí)現(xiàn)蝶糯。加載JVM自身需要的類,負(fù)責(zé)將{JAVA_HOME}/lib路徑下的核心類庫或者-Xbootclasspath指定的路徑下的jar包加載到內(nèi)存中划乖。說到這我就有個問題贬养,那我們可不可以將jar包直接丟進(jìn)對應(yīng)的路徑下,讓BootStrap ClassLoader自動幫我們進(jìn)行加載呢琴庵?應(yīng)該是不行的误算,為什么呢?因?yàn)锽ootStrap ClassLoader是根據(jù)文件名進(jìn)行匹配加載迷殿,也就是說儿礼,它只加載包名為java、javax庆寺、sun等開頭的類蚊夫。


Extension ClassLoader

Java實(shí)現(xiàn)。負(fù)責(zé)加載<JAVA_HOME>/lib/ext目錄下面或者系統(tǒng)變量-Djava.ext.dir指定路徑中的類止邮。

源代碼如下所示:

//ExtClassLoader類中獲取路徑的代碼
private static File[] getExtDirs() {
     //加載<JAVA_HOME>/lib/ext目錄中的類庫
     String s = System.getProperty("java.ext.dirs");
     File[] dirs;
     if (s != null) {
         StringTokenizer st =
             new StringTokenizer(s, File.pathSeparator);
         int count = st.countTokens();
         dirs = new File[count];
         for (int i = 0; i < count; i++) {
             dirs[i] = new File(st.nextToken());
         }
     } else {
         dirs = new File[0];
     }
     return dirs;
 }

Application ClassLoader

主要負(fù)責(zé)加載java -classpath或者-D java.class.path底下的類庫这橙。他也是跟我程序員打交道最多的類加載器。

雙親委派模式

工作原理

從圖中我們可以看出來导披,當(dāng)一個類加載器收到了需要加載請求的時候屈扎,并不會自己先去加載,而是將任務(wù)丟給它的父類撩匕,當(dāng)父類還有父類的時候鹰晨,繼續(xù)重復(fù)上一次的操作,倘若父類加載器無法完成加載任務(wù)止毕,這個時候子類才會進(jìn)行嘗試加載模蜡。這就是雙親委派模型,簡稱坑爹模型扁凛。

為什么要這樣子做呢忍疾?

1.可以避免類的重復(fù)加載,當(dāng)父類已經(jīng)加載了該類的時候谨朝,子類就沒有必要進(jìn)行重復(fù)加載了卤妒。
2.安全原因,假設(shè)你想要加載一個自定義的java.lang.String類的話字币,當(dāng)雙親委派模型找到了頂層加載器则披,發(fā)現(xiàn)在核心API中已經(jīng)定義了當(dāng)前類,就不會在此加載此類洗出,防止api被篡改士复。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市翩活,隨后出現(xiàn)的幾起案子阱洪,更是在濱河造成了極大的恐慌,老刑警劉巖菠镇,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澄峰,死亡現(xiàn)場離奇詭異,居然都是意外死亡辟犀,警方通過查閱死者的電腦和手機(jī)俏竞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堂竟,“玉大人魂毁,你說我怎么就攤上這事〕鲟冢” “怎么了席楚?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長税稼。 經(jīng)常有香客問我烦秩,道長垮斯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任只祠,我火速辦了婚禮兜蠕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抛寝。我一直安慰自己熊杨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布盗舰。 她就那樣靜靜地躺著晶府,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钻趋。 梳的紋絲不亂的頭發(fā)上川陆,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機(jī)與錄音蛮位,去河邊找鬼书劝。 笑死,一個胖子當(dāng)著我的面吹牛土至,可吹牛的內(nèi)容都是我干的购对。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼陶因,長吁一口氣:“原來是場噩夢啊……” “哼骡苞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起楷扬,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤解幽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烘苹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躲株,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年镣衡,在試婚紗的時候發(fā)現(xiàn)自己被綠了霜定。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡廊鸥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惰说,到底是詐尸還是另有隱情磨德,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站典挑,受9級特大地震影響酥宴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜您觉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一拙寡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧顾犹,春花似錦、人聲如沸褒墨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郁妈。三九已至浑玛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間噩咪,已是汗流浹背顾彰。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胃碾,地道東北人涨享。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像仆百,于是被迫代替她去往敵國和親厕隧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容