亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > Java 并發(fā)編程解析 | Java 程序創(chuàng)建過(guò)程、加載過(guò)程

Java 并發(fā)編程解析 | Java 程序創(chuàng)建過(guò)程、加載過(guò)程

來(lái)源:千鋒教育
發(fā)布人:qyf
時(shí)間: 2022-08-02 17:49:45 1659433785

  Java 程序創(chuàng)建過(guò)程

1

  從 class 文件到內(nèi)存中的類,按先后順序需要經(jīng)過(guò)加載、鏈接以及初始化三大步驟。其中,鏈接過(guò)程中同樣需要驗(yàn)證;而內(nèi)存中的類沒(méi)有經(jīng)過(guò)初始化,同樣不能使用。那么,是否所有的 Java 類都需要經(jīng)過(guò)這幾步呢?

  我們知道 Java 語(yǔ)言的類型可以分為兩大類:基本類型(primitive types)和引用類型(reference types)。在上一篇中,我已經(jīng)詳細(xì)介紹過(guò)了 Java 的基本類型,它們是由 Java 虛擬機(jī)預(yù)先定義好的。

  至于另一大類引用類型,Java 將其細(xì)分為四種:類、接口、數(shù)組類和泛型參數(shù)。由于泛型參數(shù)會(huì)在編譯過(guò)程中被擦除(我會(huì)在專欄的第二部分詳細(xì)介紹),因此 Java 虛擬機(jī)實(shí)際上只有前三種。在類、接口和數(shù)組類中,數(shù)組類是由 Java 虛擬機(jī)直接生成的,其他兩種則有對(duì)應(yīng)的字節(jié)流。

  說(shuō)到字節(jié)流,最常見的形式要屬由 Java 編譯器生成的 class 文件。除此之外,我們也可以在程序內(nèi)部直接生成,或者從網(wǎng)絡(luò)中獲取(例如網(wǎng)頁(yè)中內(nèi)嵌的小程序 Java applet)字節(jié)流。這些不同形式的字節(jié)流,都會(huì)被加載到 Java 虛擬機(jī)中,成為類或接口。為了敘述方便,下面我就用“類”來(lái)統(tǒng)稱它們。

  無(wú)論是直接生成的數(shù)組類,還是加載的類,Java 虛擬機(jī)都需要對(duì)其進(jìn)行鏈接和初始化。

  其實(shí),Java 虛擬機(jī)將字節(jié)流轉(zhuǎn)化為 Java 類的過(guò)程,就是我們常說(shuō)的Java類的創(chuàng)建過(guò)程。這個(gè)過(guò)程可分為加載、鏈接以及初始化三大步驟:

  1.加載是指查找字節(jié)流,并且據(jù)此創(chuàng)建類的過(guò)程。加載需要借助類加載器,在 Java 虛擬機(jī)中,類加載器使用了雙親委派模型,即接收到加載請(qǐng)求時(shí),會(huì)先將請(qǐng)求轉(zhuǎn)發(fā)給父類加載器。

  2.鏈接,是指將創(chuàng)建成的類合并至 Java 虛擬機(jī)中,使之能夠執(zhí)行的過(guò)程。鏈接還分驗(yàn)證、準(zhǔn)備和解析三個(gè)階段。其中,解析階段為非必須的。

  3.初始化,則是為標(biāo)記為常量值的字段賦值,以及執(zhí)行 < clinit > 方法的過(guò)程。類的初始化僅會(huì)被執(zhí)行一次,這個(gè)特性被用來(lái)實(shí)現(xiàn)單例的延遲初始化。

  3.Java 程序加載過(guò)程

2

  從虛擬機(jī)視角來(lái)看,執(zhí)行 Java 代碼首先需要將它編譯而成的 class 文件加載到 Java 虛擬機(jī)中。加載后的 Java 類會(huì)被存放于方法區(qū)(Method Area)中。實(shí)際運(yùn)行時(shí),虛擬機(jī)會(huì)執(zhí)行方法區(qū)內(nèi)的代碼。

  如果你熟悉 X86 的話,你會(huì)發(fā)現(xiàn)這和段式內(nèi)存管理中的代碼段類似。而且,Java 虛擬機(jī)同樣也在內(nèi)存中劃分出堆和棧來(lái)存儲(chǔ)運(yùn)行時(shí)數(shù)據(jù)。

  不同的是,Java 虛擬機(jī)會(huì)將棧細(xì)分為面向 Java 方法的 Java 方法棧,面向本地方法(用 C++ 寫的 native 方法)的本地方法棧,以及存放各個(gè)線程執(zhí)行位置的 PC 寄存器。

  在運(yùn)行過(guò)程中,每當(dāng)調(diào)用進(jìn)入一個(gè) Java 方法,Java 虛擬機(jī)會(huì)在當(dāng)前線程的 Java 方法棧中生成一個(gè)棧幀,用以存放局部變量以及字節(jié)碼的操作數(shù)。這個(gè)棧幀的大小是提前計(jì)算好的,而且 Java 虛擬機(jī)不要求棧幀在內(nèi)存空間里連續(xù)分布。

  當(dāng)退出當(dāng)前執(zhí)行的方法時(shí),不管是正常返回還是異常返回,Java 虛擬機(jī)均會(huì)彈出當(dāng)前線程的當(dāng)前棧幀,并將之舍棄。

  從硬件視角來(lái)看,Java 字節(jié)碼無(wú)法直接執(zhí)行。因此,Java 虛擬機(jī)需要將字節(jié)碼翻譯成機(jī)器碼。

  啟動(dòng)類加載器是由 C++ 實(shí)現(xiàn)的,沒(méi)有對(duì)應(yīng)的 Java 對(duì)象,因此在 Java 中只能用 null 來(lái)指代。

  除了啟動(dòng)類加載器之外,其他的類加載器都是 java.lang.ClassLoader 的子類,因此有對(duì)應(yīng)的 Java 對(duì)象。這些類加載器需要先由另一個(gè)類加載器,比如說(shuō)啟動(dòng)類加載器,加載至 Java 虛擬機(jī)中,方能執(zhí)行類加載。

  在 Java 虛擬機(jī)中,這個(gè)潛規(guī)則有個(gè)特別的名字,叫雙親委派模型。每當(dāng)一個(gè)類加載器接收到加載請(qǐng)求時(shí),它會(huì)先將請(qǐng)求轉(zhuǎn)發(fā)給父類加載器。在父類加載器沒(méi)有找到所請(qǐng)求的類的情況下,該類加載器才會(huì)嘗試去加載。

  在 Java 9 之前,啟動(dòng)類加載器負(fù)責(zé)加載最為基礎(chǔ)、最為重要的類,比如存放在 JRE 的 lib 目錄下 jar 包中的類(以及由虛擬機(jī)參數(shù) -Xbootclasspath 指定的類)。除了啟動(dòng)類加載器之外,另外兩個(gè)重要的類加載器是擴(kuò)展類加載器(extension class loader)和應(yīng)用類加載器(application class loader),均由 Java 核心類庫(kù)提供。

  擴(kuò)展類加載器的父類加載器是啟動(dòng)類加載器。它負(fù)責(zé)加載相對(duì)次要、但又通用的類,比如存放在 JRE 的 lib/ext 目錄下 jar 包中的類(以及由系統(tǒng)變量 java.ext.dirs 指定的類)。

  應(yīng)用類加載器的父類加載器則是擴(kuò)展類加載器。它負(fù)責(zé)加載應(yīng)用程序路徑下的類。(這里的應(yīng)用程序路徑,便是指虛擬機(jī)參數(shù) -cp/-classpath、系統(tǒng)變量 java.class.path 或環(huán)境變量 CLASSPATH 所指定的路徑。)默認(rèn)情況下,應(yīng)用程序中包含的類便是由應(yīng)用類加載器加載的。

  Java 9 引入了模塊系統(tǒng),并且略微更改了上述的類加載器1。擴(kuò)展類加載器被改名為平臺(tái)類加載器(platform class loader)。Java SE 中除了少數(shù)幾個(gè)關(guān)鍵模塊,比如說(shuō) java.base 是由啟動(dòng)類加載器加載之外,其他的模塊均由平臺(tái)類加載器所加載。

  除了由 Java 核心類庫(kù)提供的類加載器外,我們還可以加入自定義的類加載器,來(lái)實(shí)現(xiàn)特殊的加載方式。舉例來(lái)說(shuō),我們可以對(duì) class 文件進(jìn)行加密,加載時(shí)再利用自定義的類加載器對(duì)其解密。

  除了加載功能之外,類加載器還提供了命名空間的作用。在 Java 虛擬機(jī)中,類的唯一性是由類加載器實(shí)例以及類的全名一同確定的。即便是同一串字節(jié)流,經(jīng)由不同的類加載器加載,也會(huì)得到兩個(gè)不同的類。在大型應(yīng)用中,我們往往借助這一特性,來(lái)運(yùn)行同一個(gè)類的不同版本。

  更多關(guān)于“java培訓(xùn)”的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬(wàn)人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來(lái)試聽。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
服務(wù)器為什么要用Linux?

服務(wù)器為什么要用Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,有其獨(dú)特的優(yōu)勢(shì)和特點(diǎn)。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問(wèn)題是什么?

ORM(對(duì)象關(guān)系映射)解決的主要問(wèn)題是將關(guān)系數(shù)據(jù)庫(kù)與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)中,數(shù)據(jù)以表格的形式存儲(chǔ),而在面向?qū)ο?..詳情>>

2023-10-14 12:26:19
Go為什么不支持三元運(yùn)算符?

Go為什么不支持三元運(yùn)算符Go語(yǔ)言是一種以簡(jiǎn)潔和有效性為目標(biāo)的編程語(yǔ)言,因此在設(shè)計(jì)過(guò)程中,Go的設(shè)計(jì)者刻意排除了一些他們認(rèn)為可能導(dǎo)致復(fù)雜性或...詳情>>

2023-10-14 12:12:36
IT通常說(shuō)的平臺(tái)是什么意思?

在信息技術(shù)(IT)領(lǐng)域,”平臺(tái)”這個(gè)詞有著廣泛的含義,它常常指代支持軟件應(yīng)用開發(fā)和運(yùn)行的基礎(chǔ)框架和環(huán)境。以下是對(duì)”平臺(tái)”這個(gè)概念的更深入...詳情>>

2023-10-14 11:55:36
什么是PowerPivot?

什么是PowerPivotPowerPivot,全稱”PowerPivot for Excel”,是Microsoft提供的一種數(shù)據(jù)分析工具,可以作為Excel的插件使用。通過(guò)PowerPivot,...詳情>>

2023-10-14 11:25:48
亚洲AV无码专区色爱天堂老鸭窝| 无码精品人妻AV一区二区三区| 色偷拍 自怕 亚洲 10P| 洗澡被公强奷30分钟视频| 亚洲无线一二三四区手机| AV鲁丝一区鲁丝二区鲁丝三区| 丰满人妻被中出中文字幕| 韩国三级香港三级日本三级L| 久碰人澡人澡人澡人澡人视频| 人人妻人人爽人人| 亚洲6080YY久久无码产自国| 中国女人内谢69XXXX免费视| 房中之术御女之功秘术| 韩国无码无遮挡在线观看| 免费精品99久久国产综合精品 | 一二三四视频社区| 扒开女人P添大荫蒂| 国精产品一二二区传媒有哪些| 麻豆丰满少妇CHINESE| 手在线播放波多野结衣| 亚洲一区二区三区日本久久九| 宝贝把腿开大让我添添电影| 韩国精品一区二区三区无码视频| 女人扒开屁股桶爽6O分钟| 无码人妻精一区二区三区| 中国熟妇牲交视频| 国产精品免费久久久久久蜜桃| 久久中文字幕无码中文字幕有码| 色婷婷综合久久久久中文一区二区| 亚洲女人被黑人巨大进入| 成 人 黄 色 网站 69| 精产国品一二三产品99| 日本人妻JAPANESEXXX| 亚洲人午夜射精精品日韩| 成人爽A毛片免费| 久久久久久国产精品无码下载| 三上悠亚AV资源站| 伊人久久大香线蕉AV不卡| 国产成人亚洲精品无码H| 蜜臀av蜜臀一区二区三区| 无码熟妇人妻AⅤ在线影片| 97国产精华最好的产品| 国内极度色诱视频网站| 人妻无码一区二区在线影院| 亚洲日韩国产精品乱-久| 疯狂做受ⅩXXX高潮欧美| 老干部熟女高潮视频| 无码国产精品一区二区免费模式| √天堂中文最新版在线中文| 国内精品人妻久久毛片APP| 日本极品少妇VIDEOSSEX| 亚洲制服丝袜中文字幕在线| 夫では満足できない人妻| 免费观看高清大片的播放器| 亚洲AV无码精品色午夜蛋壳| 差差漫画页面免费漫画欢迎你| 久久久久精品波多野吉衣无码AV| 熟女少妇丰满一区二区| 88国产精品视频一区二区三区| 黑人人妻AV一区二区三| 少妇爆乳无码AV无码波霸| 99国产欧美久久久精品蜜桃| 精品国产乱码久久久软件下载| 色婷婷在线精品国自产拍 | 国产超碰人人爽人人做| 欧美丰满大乳高跟鞋| 亚洲乱码卡1卡2新区3| 国产好大好硬好爽免费不卡| 人妻av无码一区二区三区| 永久黄网站色视频免费品善网| 国产午夜福利亚洲第一| 色翁荡熄又大又硬又粗又视频| 8Ⅹ8X擦拨擦拨成人免费视频| 精品一区二区三区| 亚洲AV蜜桃无码精品无码| 高潮喷吹一区二区在线观看| 欧美性爱一二三区| 中文字幕被公侵犯的漂亮人妻| 精品久久久无码中字| 香蕉大美女天天爱天天做| 敌伦交换第11部分给了轨公领| 欧美精品少妇XXXXX喷水| 玉蒲团2之玉女心经| 精品久久久久久无码国产| 午夜精品无人区乱码1区2区| 俄罗斯人和欧洲人的性格差异| 强行挺进美艳老师的后臀| 最新国产精品拍自在线播放| 久久久噜噜噜久久| 亚洲日本一线产区和二线产| 黑人巨茎迎战白嫩少妇| 新版АⅤ资源新版在线天堂| 国产成人A∨麻豆精品| 日韩人妻无码精品久久| 啊灬啊灬快点灬用力岳| 女の乳搾りです在线观看| 曰韩无码AV片免费播放不卡| 久久精品亚洲熟妇少妇任你躁 | 无码aⅴ精品一区二区三区浪潮 | 久久久国产精品ⅤA麻豆LL| 亚洲国产精品久久一线APP| 国外免费B2B网站| 亚洲AV无码成人片在线观看一区 | 欧美黑人猛XXxXX内射| 综合激情五月综合激情五月激情1| 久久久久久久久久久精品| 亚洲欧美日韩在线一区| 教室抽插调教老师小说| 亚洲国产成人无码影片在线播放| 国色天香网WWW在线观看| 亚洲AV成人一区二区三区不卡| 国产免费AV一区二区三区| 无人区一码二码三码区别在哪| 国产精品国产三级国快看| 无码A级毛片日韩精品| 国产精品亚洲А∨天堂2018| 无码人妻精品一区二| 国产男男GAY做受ⅩXX软件| 性CHINESE新婚VIDEO| 国产亚洲人成A在线V网站| 亚洲AV片在线观看| 黑料传送门TTTZZZ07DU| 亚洲精品无码久久久久不卡| 久久精品无码一区二区软件| 一本久久伊人热热精品中文| 麻豆精品一区二区综合AV| 91人妻一区二区三区蜜桃| 欧美激情在线播放| 被两个男人按住吃奶好爽| 上面一个摸下面一个手念什么| 国产V综合V亚洲欧| 亚州中文字幕午夜福利电影| 精品多毛少妇人妻AV免费久久 | 性无码一区二区三区在线观看 | 亚洲伊人成无码综合影院| 老熟女奶头好大呀| ASS年轻少妇BBWPICS| 日本免费一区二区三区| 国产AV无码专区亚洲AWWW| 午夜亚洲AV日韩AV无码大全| 精产国品一二三产区区別| 夜夜天天噜狠狠爱2019| 妺妺窝人体色WWW写真| けんじゃたいむMANA原神| 熟妇的荡欲乱色欲av浪潮| 国产一区二区三区水蜜桃| 亚洲熟妇丰满多毛XXXX| 男人的又粗又长又硬有白色液体| 把腿扒开做爽爽视频| 天堂8在线新版官网| 韩国三级香港三级日本三级L | 麻豆三级电影无码| JIZZJIZZ丝袜老师| 少妇被粗大的猛烈进出69影院 | 国产精品亚洲精品日韩已方 | 无码人妻一区二区三区兔费| 狠狠色综合TV久久久久久| 在线天堂中文最新版| 人妻少妇看A偷人无码精品视频| 国产成人婷婷丁香在线| 亚洲国产欧洲综合997久久| 美女裸露双奶头光屁股无遮挡直播| 啊轻点灬大JI巴太粗太长了在线| 婷婷五月综合激情| 精品国产污污免费网站| 55岁大妈玩CSGO| 水多多凹凸福利视频导航| 精品欧美成人高清在线观看| 中文字幕无码成人片| 少妇人妻互换不带套| 精品9E精品视频在线观看| 9612黄桃网站进入页面直播| 婷婷色香合缴缴情AV第三区| 久久国产精品无码一区二区三区| 99久久无码一区人妻A黑| 无码AV免费不卡在线观看| 久久九九久精品国产| 成 人 黄 色 网 站 视 频| 亚洲成人Av在线| 欧美熟妇呻吟猛交XX性| 国产精品一区二区久久| 中国少妇XXXX做受| 天堂资源中文最新版在线一区| 久久国产乱子伦精品免费女人| 啊灬啊灬啊灬高潮了视频 | 91人妻人人澡人爽人精品| 偷拍精品视频一区二区三区| 久久久久久午夜成人影院| 儿子耕了母亲荒废的田清朝| 亚洲色大18成人网站WWW在线| 日本不卡一区二区三区| 精品蜜臀久久久久99网站| 成 人 黄 色 网 站 ·大| 亚洲欧洲无码一区二区三区| 人妻少妇精品无码专区芭乐视网| 国色天香一卡2卡三卡4卡乱码| FREE性台湾娇小VIDEOS| 亚洲AV永久无码区成人网站| 欧洲码和亚洲码的尺码区别| 娇妻被黑人杂交下呻吟|