成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

從一無(wú)所知到無(wú)所不知————jvm系列(1)

Betta / 1562人閱讀

摘要:學(xué)習(xí)能更深入的理解這門(mén)語(yǔ)言,能理解語(yǔ)言底層的執(zhí)行過(guò)程,深入到字節(jié)碼層次。

目錄

?

前言

程序的運(yùn)行

1.JVM類(lèi)加載機(jī)制

①一般在什么情況下會(huì)去加載一個(gè)類(lèi)?也就是說(shuō),什么時(shí)候“.class”字節(jié)碼文件中加載這個(gè)類(lèi)到JVM內(nèi)存里來(lái)?

②驗(yàn)證、準(zhǔn)備、初始化

③初始化

2.類(lèi)加載器和雙親委派機(jī)制

①啟動(dòng)類(lèi)加載器

②擴(kuò)展類(lèi)加載器

③應(yīng)用程序類(lèi)加載器

④自定義類(lèi)加載器

⑤雙親委派機(jī)制

結(jié)尾? ? ? ? ? ? ? ? ?


前言

JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫(xiě),JVM是一種用于計(jì)算設(shè)備的規(guī)范,
它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。
學(xué)習(xí)JVM能更深入的理解Java這門(mén)語(yǔ)言,能理解Java語(yǔ)言底層的執(zhí)行過(guò)程,深入到字節(jié)碼層次。
從本篇文章開(kāi)始,我將帶領(lǐng)大家先把JVM運(yùn)行機(jī)制的整體脈絡(luò)梳理清楚,然后不斷的深入學(xué)習(xí)。
另外,本系列的更新進(jìn)度一定會(huì)各位滿意,因?yàn)槲乙布磳⑦M(jìn)入急速成長(zhǎng)狀態(tài),我們一起加油!

程序的運(yùn)行

我們知道“.java”代碼文件,編譯成“.class”字節(jié)碼文件,然后類(lèi)加載器把“.class”字節(jié)碼文件中的類(lèi)給加載到JVM中,JVM就會(huì)基于自己的字節(jié)碼執(zhí)行引擎,來(lái)執(zhí)行加載到內(nèi)存里的我們寫(xiě)好類(lèi)。那類(lèi)的加載機(jī)制是怎么樣的呢?類(lèi)加載器和雙親委派機(jī)制又是什么呢?


1.JVM類(lèi)加載機(jī)制


其實(shí)一個(gè)類(lèi)從加載到使用要經(jīng)過(guò):加載 -> 驗(yàn)證 -> 準(zhǔn)備 -> 解析 -> 初始化 -> 使用 -> 卸載


一般在什么情況下會(huì)去加載一個(gè)類(lèi)?也就是說(shuō),什么時(shí)候“.class”字節(jié)碼文件中加載這個(gè)類(lèi)到JVM內(nèi)存里來(lái)?


答:代碼中用到這個(gè)類(lèi)的時(shí)候。


驗(yàn)證、準(zhǔn)備、初始化


答:驗(yàn)證是校驗(yàn)?zāi)慵虞d進(jìn)來(lái)的“.class”文件,是否符合指定的規(guī)范,而準(zhǔn)備是給驗(yàn)證后的類(lèi)分配一定的內(nèi)存空間、給里面的類(lèi)(靜態(tài))變量(也就是static修飾的變量)分配內(nèi)存空間、默認(rèn)的初始值,解析階段實(shí)際上是把符號(hào)引用替換為直接引用的過(guò)程。


初始化


答:如“new ReplicaManager()”來(lái)實(shí)例化類(lèi)的對(duì)象了,此時(shí)就會(huì)觸發(fā)類(lèi)的加載到初始化的全過(guò)程,把這個(gè)類(lèi)準(zhǔn)備好,然后再實(shí)例化一個(gè)對(duì)象出來(lái);(包含“main()”方法的主類(lèi),必須是立馬初始化的。)
注意,如果初始化一個(gè)類(lèi)的時(shí)候,發(fā)現(xiàn)他的父類(lèi)還沒(méi)初始化,那么必須先初始化他的父類(lèi)


2.類(lèi)加載器和雙親委派機(jī)制


啟動(dòng)類(lèi)加載器


Bootstrap ClassLoader,負(fù)責(zé)加載我們?cè)跈C(jī)器上安裝的Java目錄下的核心類(lèi)


擴(kuò)展類(lèi)加載器


Extension ClassLoader,Java安裝目錄下,有一個(gè)“l(fā)ib/ext”目錄
這里面有一些類(lèi),就是需要使用這個(gè)類(lèi)加載器來(lái)加載的,支撐你的系統(tǒng)的運(yùn)行。


應(yīng)用程序類(lèi)加載器


Application ClassLoader,這類(lèi)加載器負(fù)責(zé)去加載環(huán)境變量所指定的路徑中的類(lèi),
可以理解為去加載你寫(xiě)好的Java代碼!


自定義類(lèi)加載器


自定義類(lèi)加載器,可以根據(jù)自己的需求加載類(lèi)。


雙親委派機(jī)制


JVM的類(lèi)加載器是有親子層級(jí)結(jié)構(gòu)的,就是說(shuō)啟動(dòng)類(lèi)加載器是最上層的,擴(kuò)展類(lèi)加載器在第二層,第三層是應(yīng)用程序類(lèi)加載器,最后一層是自定義類(lèi)加載器。也就是說(shuō),需要加載一個(gè)類(lèi)時(shí),先由最上層找,找不到就由下一層找,最后找到需要加載這個(gè)類(lèi)的類(lèi)加載器,然后這個(gè)加載器就自己把這個(gè)類(lèi)加載到內(nèi)存里去了。這就是雙親委派模型,可以避免多層級(jí)的加載器結(jié)構(gòu)重復(fù)加載某些類(lèi)。

結(jié)尾? ? ? ? ? ? ? ? ?

給大家留一個(gè)問(wèn)題:什么場(chǎng)景下會(huì)用到自定義類(lèi)加載器呢?

????????????????????????????????????????????????????????????????本系列下一篇文章鏈接

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/123598.html

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來(lái)學(xué)習(xí)一門(mén)新的編程語(yǔ)言吧!

    摘要:入門(mén),第一個(gè)這是一門(mén)很新的語(yǔ)言,年前后正式公布,算起來(lái)是比較年輕的編程語(yǔ)言了,更重要的是它是面向程序員的函數(shù)式編程語(yǔ)言,它的代碼運(yùn)行在之上。它通過(guò)編輯類(lèi)工具,帶來(lái)了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語(yǔ)言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺(jué)已經(jīng)到來(lái)了,總結(jié)過(guò)去的 2017,相信小伙們一定有很多收獲...

    caspar 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來(lái)學(xué)習(xí)一門(mén)新的編程語(yǔ)言吧!

    摘要:入門(mén),第一個(gè)這是一門(mén)很新的語(yǔ)言,年前后正式公布,算起來(lái)是比較年輕的編程語(yǔ)言了,更重要的是它是面向程序員的函數(shù)式編程語(yǔ)言,它的代碼運(yùn)行在之上。它通過(guò)編輯類(lèi)工具,帶來(lái)了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語(yǔ)言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺(jué)已經(jīng)到來(lái)了,總結(jié)過(guò)去的 2017,相信小伙們一定有很多收獲...

    nihao 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來(lái)學(xué)習(xí)一門(mén)新的編程語(yǔ)言吧!

    摘要:入門(mén),第一個(gè)這是一門(mén)很新的語(yǔ)言,年前后正式公布,算起來(lái)是比較年輕的編程語(yǔ)言了,更重要的是它是面向程序員的函數(shù)式編程語(yǔ)言,它的代碼運(yùn)行在之上。它通過(guò)編輯類(lèi)工具,帶來(lái)了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語(yǔ)言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺(jué)已經(jīng)到來(lái)了,總結(jié)過(guò)去的 2017,相信小伙們一定有很多收獲...

    Drummor 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<