国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Betta / 1558人閱讀

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

目錄

?

前言

程序的運(yùn)行

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

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

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

③初始化

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

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

②擴(kuò)展類加載器

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

④自定義類加載器

⑤雙親委派機(jī)制

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


前言

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

程序的運(yùn)行

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


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


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


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


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


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


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


初始化


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


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


啟動(dòng)類加載器


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


擴(kuò)展類加載器


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


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


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


自定義類加載器


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


雙親委派機(jī)制


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

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

0條評(píng)論

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