Java虛擬機如何加載類

虛擬機加載類的過程

從class文件到內(nèi)存中的類,總體來說分為三個階段:加載伏恐、鏈接以及初始化

加載

  • 加載纠脾,是指查找字節(jié)流玛瘸,并根據(jù)其創(chuàng)建類的過程。這個字節(jié)流乳乌,通常是來自于class文件捧韵。Java虛擬機需要借助類加載器來完成查找字節(jié)流這一過程。
  • 雙親委派模型:每當一個類加載器接收到加載請求時汉操,它會先將請求轉(zhuǎn)發(fā)給父類加載器再来。在父類加載器沒有找到所請求的類的情況下,該類加載器才會嘗試去加載磷瘤。
  • 啟動類加載器(bootstrap class loader) 由C++實現(xiàn)的芒篷,沒有對應的Java對象。負責加載最基礎采缚、最重要的類 例如 JRE lib 目錄下jar包中的類针炉。還有其他兩個比較重要的類加載器: 擴展類加載器(extension class loader)和應用類加載器(application class loader) 這兩個由Java的核心類庫提供。
  • 擴展類加載器的父類加載器是啟動類加載器扳抽。它加載相對次要篡帕,但通用的類殖侵。例如存放在 lib/ext 目錄下jar包中的類。
  • 應用類加載器的父類加載器是擴展類加載器镰烧。它加載應用程序路徑下的類拢军。
  • Java9 引入了模塊系統(tǒng)。擴展類加載器改名為平臺類加載器怔鳖。JavaSE中的除了少數(shù)模塊由啟動類加載器加載茉唉,如java.base,其他模塊由平臺類加載器加載结执。平臺類加載器由原來的擴展類加載器進一步拓展了度陆。。搶了父類加載器的活献幔?懂傀?
  • 類加載器除了加載功能外還有命名空間的作用。在Java虛擬機中斜姥,類的唯一性是由類加載器實例和類的全名一同確定的鸿竖。

鏈接

  • 鏈接是指將創(chuàng)建的類合并至Java虛擬機,使之能夠執(zhí)行的過程铸敏「坑牵可分為驗證、準備和解析三個階段杈笔。
    • 驗證:確保被加載類能夠滿足虛擬機的約束條件闪水。
    • 準備:為被加載類的靜態(tài)字段分配內(nèi)存。
    • 解析:對于一個方法調(diào)用蒙具,編譯器會生成一個包含目標方法所在類的名字球榆、目標方法的名字、接收參數(shù)類型以及返回值類型的符號引用禁筏,來指代所要調(diào)用的方法持钉。解析階段的目的,正是將這些符號引用解析成為實際引用篱昔。如果這個符號引用指向一個未被加載的類或者未被加載類的字段或方法每强,那么這時會觸發(fā)這個類的加載。

初始化

  • 初始化是指對標記為常量值的字段進行賦值州刽,以及執(zhí)行<clinit>方法的過程空执。類的初始化只會執(zhí)行一次。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末穗椅,一起剝皮案震驚了整個濱河市辨绊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匹表,老刑警劉巖门坷,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宣鄙,死亡現(xiàn)場離奇詭異,居然都是意外死亡拜鹤,警方通過查閱死者的電腦和手機框冀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敏簿,“玉大人,你說我怎么就攤上這事宣虾」咴#” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵绣硝,是天一觀的道長蜻势。 經(jīng)常有香客問我,道長鹉胖,這世上最難降的妖魔是什么握玛? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮甫菠,結(jié)果婚禮上挠铲,老公的妹妹穿的比我還像新娘。我一直安慰自己寂诱,他們只是感情好拂苹,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痰洒,像睡著了一般瓢棒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丘喻,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天脯宿,我揣著相機與錄音,去河邊找鬼泉粉。 笑死连霉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的搀继。 我是一名探鬼主播窘面,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼叽躯!你這毒婦竟也來了财边?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤点骑,失蹤者是張志新(化名)和其女友劉穎酣难,沒想到半個月后谍夭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡憨募,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年紧索,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菜谣。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡珠漂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尾膊,到底是詐尸還是另有隱情媳危,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布冈敛,位于F島的核電站待笑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抓谴。R本人自食惡果不足惜暮蹂,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望癌压。 院中可真熱鬧仰泻,春花似錦、人聲如沸措拇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丐吓。三九已至浅悉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間券犁,已是汗流浹背术健。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粘衬,地道東北人荞估。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像稚新,于是被迫代替她去往敵國和親勘伺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

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