2019-10-30深入理解JVM類加載

類加載

  • 在java 代碼中返劲,類型的加載病苗、連接與初始化過程都是在程序運(yùn)行期間完成的
  • 提供了更大的靈活性惩嘉,增加了更多的可能性

類型的加載:
查找并加載類的二進(jìn)制數(shù)據(jù)
比如將已經(jīng)編寫好的.class文件浪耘。從磁盤上面加載到內(nèi)存里面

  • 連接:
    • 驗(yàn)證:確保被加載的類的正確性
    • 準(zhǔn)備:為類的靜態(tài)變量分配內(nèi)存乱灵,并將其初始化為默認(rèn)值
    • 解析:把類中的符號(hào)引用轉(zhuǎn)換為直接引用
  • 初始化:為類的靜態(tài)變量賦予正確的初始值

初始化:
比如對(duì)于一些靜態(tài)遍量的賦值

類加載器深入剖析

  • Java虛擬機(jī)與程序的生命周期
  • 在如下幾種情況下,Java虛擬機(jī)將結(jié)束生命周期
    • 執(zhí)行了System.exit()方法
    • 程序正常執(zhí)行結(jié)束
    • 程序在執(zhí)行過程中遇到了異称叱澹或錯(cuò)誤而異常終止
    • 由于操作系統(tǒng)出現(xiàn)錯(cuò)誤而導(dǎo)致java虛擬機(jī)進(jìn)程終止(了解)

類的使用與卸載

  • 使用
  • 卸載(由Java虛擬機(jī)自帶的類加載器所加載的類痛倚,在虛擬機(jī)的生命周期中,始終不會(huì)被卸載澜躺。由用戶自定義的類加載器加載的類是可以被卸載的蝉稳。)

Java程序?qū)︻惖氖褂梅绞娇煞譃閮煞N

  • 主動(dòng)使用(七種)
    • 創(chuàng)建類的實(shí)例
    • 訪問某個(gè)類或接口的靜態(tài)變量,或者對(duì)該靜態(tài)變量賦值(getstatic苗踪,putstatic)
    • 調(diào)用類的靜態(tài)方法(invokestatic)
    • 反射(如Class.forName("com.test.Test"))
    • 初始化一個(gè)類的子類
    • Java虛擬機(jī)啟動(dòng)時(shí)被標(biāo)明為啟動(dòng)類的類(Java.Test)
    • JDK1.7開始提供的動(dòng)態(tài)語言的支持:
      java.lang.invoke.MethidHandle實(shí)例的解析結(jié)果REF_getStatic,REF_putStatic,REF_invokeStatic句柄對(duì)應(yīng)的類沒有初始化颠区,則初始化(了解即可)
  • 除了以上7種情況,其他使用Java類的方式都被看作是對(duì)類的被動(dòng)使用通铲,都不會(huì)導(dǎo)致類的初始化
  • 被動(dòng)使用
  • 所有的Java虛擬機(jī)實(shí)現(xiàn)必須在每個(gè)類或接口被Java程序“首次主動(dòng)使用”時(shí)才初始化他們

類的加載

  • 類的加載指的是將類的.class文件中的二進(jìn)制數(shù)據(jù)讀入到內(nèi)存中,將其放在運(yùn)行時(shí)數(shù)據(jù)區(qū)的方法區(qū)內(nèi)器贩,然后在內(nèi)存中創(chuàng)建一個(gè)java.long.Class對(duì)象(規(guī)范并未說明Class對(duì)象位于哪里颅夺,HotSpot虛擬機(jī)將其放在了方法區(qū)中)用來封裝類在方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)
  • 加載.class文件的方式
    • 從本地系統(tǒng)中直接加載
    • 通過網(wǎng)絡(luò)下載.class文件
    • 從zip,jar等歸檔文件中加載.class文件
    • 從專有數(shù)據(jù)庫中提取.class文件(了解即可)
    • 將Java源文件動(dòng)態(tài)編譯為.class文件
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末朋截,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吧黄,更是在濱河造成了極大的恐慌部服,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拗慨,死亡現(xiàn)場(chǎng)離奇詭異廓八,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赵抢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門剧蹂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人烦却,你說我怎么就攤上這事宠叼。” “怎么了其爵?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵冒冬,是天一觀的道長。 經(jīng)常有香客問我摩渺,道長简烤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任摇幻,我火速辦了婚禮乐埠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘囚企。我一直安慰自己丈咐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布龙宏。 她就那樣靜靜地躺著棵逊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪银酗。 梳的紋絲不亂的頭發(fā)上辆影,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音黍特,去河邊找鬼蛙讥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛灭衷,可吹牛的內(nèi)容都是我干的次慢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼迫像!你這毒婦竟也來了劈愚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤闻妓,失蹤者是張志新(化名)和其女友劉穎菌羽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體由缆,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡注祖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了均唉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片是晨。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浸卦,靈堂內(nèi)的尸體忽然破棺而出署鸡,到底是詐尸還是另有隱情,我是刑警寧澤限嫌,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布靴庆,位于F島的核電站,受9級(jí)特大地震影響怒医,放射性物質(zhì)發(fā)生泄漏炉抒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一稚叹、第九天 我趴在偏房一處隱蔽的房頂上張望焰薄。 院中可真熱鬧,春花似錦扒袖、人聲如沸塞茅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽野瘦。三九已至,卻和暖如春飒泻,著一層夾襖步出監(jiān)牢的瞬間鞭光,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工泞遗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惰许,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓史辙,卻偏偏與公主長得像汹买,于是被迫代替她去往敵國和親佩伤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359