99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

JVM結(jié)構(gòu)--類加載

0
分享至

類加載
類加載子系統(tǒng)的作用



? 類加載器子系統(tǒng)負(fù)責(zé)從文件系統(tǒng)或者網(wǎng)絡(luò)中加載class文件,class文件在文件開(kāi)頭有特定的文件標(biāo)識(shí)(字節(jié)碼文件都以CA FE BA BE標(biāo)識(shí)開(kāi)頭)。
? ClassLoader只負(fù)責(zé)class文件的加載,至于它是否可以運(yùn)行,則由Execution Engine決定。加載的類信息存放于一塊稱為 方法區(qū) 的內(nèi)存空間。除了類的信息外,方法區(qū)中還會(huì)存放運(yùn)行時(shí)常量池的信息,還可能包括字符串字面量和數(shù)字常量(這部分常量信息是class文件中常量池部分的內(nèi)存映射)。
類加載ClassLoader的角色



class file存在于硬盤(pán)上,可以理解為設(shè)計(jì)師畫(huà)在紙上的模板,而最終這個(gè)模板在執(zhí)行的時(shí)候是要加載到JVM當(dāng)中來(lái),根據(jù)這個(gè)模板實(shí)例化出n個(gè)一模一樣的實(shí)例。
class file加載到JVM中被稱為DNA元數(shù)據(jù)模板,放在方法區(qū)中。
在.class==》JVM==》最終稱為元數(shù)據(jù)模板,此過(guò)程就要有一個(gè)運(yùn)輸工具(類加載器ClassLoader),扮演一個(gè)快遞員的角色。
類加載的過(guò)程



1.加載
通過(guò)類名(地址)獲取此類的二進(jìn)制字節(jié)流。
將這個(gè)字節(jié)流所代表的靜態(tài)存儲(chǔ)結(jié)構(gòu)轉(zhuǎn)換為方法區(qū)(元空間)的運(yùn)行時(shí)結(jié)構(gòu)。
在內(nèi)存中生成一個(gè)代表這個(gè)類的java.lang.Class對(duì)象,作為方法區(qū)這個(gè)類的各種數(shù)據(jù)的訪問(wèn)入口。
2.鏈接
驗(yàn)證:檢驗(yàn)被加載的類是否有正確的內(nèi)部結(jié)構(gòu),并和其他類協(xié)調(diào)一致。
準(zhǔn)備:準(zhǔn)備階段負(fù)責(zé)為類的靜態(tài)屬性分配內(nèi)存,并設(shè)置默認(rèn)初始值。
? 不包含用final修飾的static實(shí)例變量,在編譯時(shí)進(jìn)行初始化。
? 不會(huì)為實(shí)例變量初始化。
解析:將類的二進(jìn)制數(shù)據(jù)中的符號(hào)引用替換成直接引用(符號(hào)引用是用一組符號(hào)描述所引用的目標(biāo),直接引用是指向目標(biāo)的指針)。
3.初始化
類在以下情況時(shí)會(huì)初始化:
創(chuàng)建類的實(shí)例,也就是new一個(gè)對(duì)象。
訪問(wèn)某個(gè)類或接口的靜態(tài)變量,或者對(duì)該靜態(tài)變量賦值。
調(diào)用類的靜態(tài)方法。
反射。
初始化一個(gè)類的子類。
類的初始化順序:
如果同時(shí)包含多個(gè)靜態(tài)變量和靜態(tài)代碼塊,則按照自上而下的順序依次執(zhí)行。
如果初始化一個(gè)類的時(shí)候,其父類尚未初始化,則優(yōu)先初始化其父類。
順序是:父類static --> 子類static --> 父類構(gòu)造方法 --> 子類構(gòu)造方法
類加載器分類
JVM支持兩種類型的類加載器,分別為 引導(dǎo)類加載器 和 自定義類加載器。
? 從概念上講,自定義類加載器一般指的時(shí)程序匯總由開(kāi)發(fā)人員自定義的一類加載器,Java虛擬機(jī)將所有派生于抽象類ClassLoader的類加載器都劃分為自定義類加載器。
常見(jiàn)的類加載器有3個(gè):



引導(dǎo)類加載器(啟動(dòng)類加載器)
使用C/C++語(yǔ)言實(shí)現(xiàn),嵌套在JVM內(nèi)部,用來(lái)加載java核心類庫(kù)。
并不集成于java.lang.ClassLoader,沒(méi)有父加載器。
負(fù)責(zé)加載擴(kuò)展類加載器和應(yīng)用類加載器,并為他們指定父類加載器。
出于安全考慮,引用類加載器只加載包名為java、javax、sun開(kāi)頭的類。
擴(kuò)展類加載器
使用java語(yǔ)言實(shí)現(xiàn)。
派生于ClassLoader類。
上層類加載器為引用類加載器。
從java.ext.dirs系統(tǒng)屬性所指定的目錄中加載類庫(kù)。或從JDK系統(tǒng)安裝目錄的jre/lib/ext子目錄(擴(kuò)展目錄)下加載類庫(kù),如果用戶創(chuàng)建的jar放在此目錄下,也會(huì)自動(dòng)有狂戰(zhàn)類加載器加載。
應(yīng)用程序類加載器
使用java語(yǔ)言實(shí)現(xiàn)。
派生于ClassLoader類。
上層類加載器為擴(kuò)展類加載器。
用來(lái)加載我們自己定義的類。
該類加載器時(shí)程序中默認(rèn)的類加載器。
通過(guò)類名.class.getClassLoader(),ClassLoader.getSystemClassLoader()來(lái)獲得。
ClassLoader是一個(gè)抽象類,其后所有的類加載器都繼承自ClassLoader(不包括啟動(dòng)類加載器)。
雙親委派機(jī)制
? Java虛擬機(jī)對(duì)class文件采用的時(shí)按需加載的方式,也就是說(shuō)當(dāng)需要該類時(shí)才會(huì)將它的class文件加載到內(nèi)存中生成class對(duì)象。而且加載某個(gè)類的class文件時(shí),Java虛擬機(jī)采用的時(shí)雙親委派機(jī)制,即把請(qǐng)求交由父類處理,它是一種任務(wù)委派模式。



工作原理:
如果一個(gè)類加載器收到了類加載請(qǐng)求,并不會(huì)先去加載,而是把這個(gè)請(qǐng)求委托給父類的加載器去執(zhí)行。
如果父類加載器還存在其父類加載器,則進(jìn)一步向上委托,一次遞歸,請(qǐng)求最終將到達(dá)頂層的啟動(dòng)類加載器。
如果父類加載器可以完成類的加載任務(wù),就成功返回,倘若父類加載器無(wú)法完成加載任務(wù),子加載器才會(huì)嘗試自己去加載,這就是雙親委派機(jī)制。
如果均加載失敗,就會(huì)拋出ClassNotFoundException異常。
**問(wèn)題:**創(chuàng)建一個(gè)名為java.lang的包和一個(gè)名為String的類,當(dāng)new String()時(shí),會(huì)加載核心庫(kù)類中的String對(duì)象,還是自己創(chuàng)建的String類對(duì)象呢?
package java.lang; //此包為自己創(chuàng)建的java.lang
public class String{
public static void main(String[] args){
System.out.println("hello");
}
}
//這段代碼能否執(zhí)行呢?(運(yùn)行不了)
雙親委派機(jī)制的優(yōu)點(diǎn):
安全。可避免用戶自己編寫(xiě)的類動(dòng)態(tài)替換Java核心類,如:java.lang.String
避免全限定命名的類重復(fù)加載(使用了findLoadClass()判斷當(dāng)前類是否已加載)
沙箱安全機(jī)制
作用:防止惡意代碼污染java源代碼
? 例如上面我們定義了一個(gè)名為String的類,所在包名為java.lang,因?yàn)檫@個(gè)類本來(lái)是屬于jdk的,如果沒(méi)有沙箱安全機(jī)制的話,這個(gè)類將會(huì)污染到系統(tǒng)中的String,但是由于沙箱安全機(jī)制,所以就委托頂層的引導(dǎo)類加載器查找到這個(gè)類,如果沒(méi)有的話就委托給擴(kuò)展類加載器,再?zèng)]有就委托到系統(tǒng)類加載器。但是由于String就是jdk的源代碼,所以在引導(dǎo)類加載器那里就加載到了,先找到先使用,所以就使用引導(dǎo)類加載器里面的String,后面的一概不能使用,這就保證了不被惡意代碼污染。
面試題:
在JVM中如何判斷兩個(gè)對(duì)象是屬于同一個(gè)類?
答:1.類的全類名(地址)完全一致。 2.類的加載器必須相同。
類的主動(dòng)使用/被動(dòng)使用
JVM規(guī)定,每個(gè)類或者接口被首次主動(dòng)使用時(shí)才對(duì)其進(jìn)行初始化,有主動(dòng)使用,自然就有被動(dòng)使用。
主動(dòng)使用和被動(dòng)使用的區(qū)別在于類是否會(huì)被初始化。
主動(dòng)使用
通過(guò)new關(guān)鍵字使類初始化,這是很常用的初始化一個(gè)類的方式,肯定會(huì)使類加載并且初始化。
訪問(wèn)類的靜態(tài)變量,包括讀取和更新
訪問(wèn)類的靜態(tài)方法
對(duì)某個(gè)類進(jìn)行反射操作,會(huì)使類初始化
初始化子類會(huì)使其父類初始化
執(zhí)行該類的main方法
被動(dòng)使用
引用該類的 靜態(tài)常量 ,不會(huì)導(dǎo)致初始化,但是也會(huì)有意外,這里的常量是指已經(jīng)指定字面量的常量,對(duì)于那些需要一些計(jì)算才能得出結(jié)果的常量就會(huì)引起類的初始化。
例如:
public final static int num=5;//不會(huì)使類初始化,被動(dòng)使用
public final static int random=new Random().nextInt();//會(huì)使類初始化,主動(dòng)使用
構(gòu)造某個(gè)類的數(shù)組時(shí)不會(huì)導(dǎo)致該類的初始化
Student[] student = new Student[10];
————————————————
版權(quán)聲明:本文為CSDN博主「Gxbalun喬峰」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_45636230/article/details/115490932

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
男性滴風(fēng)油精在私處,雖有4大好處,但醫(yī)生提醒:別盲目追求刺激

男性滴風(fēng)油精在私處,雖有4大好處,但醫(yī)生提醒:別盲目追求刺激

醫(yī)者榮耀
2025-07-01 12:05:08
不懼小米YU7?特斯拉逆勢(shì)漲價(jià),多家車企發(fā)布7月購(gòu)車新政策

不懼小米YU7?特斯拉逆勢(shì)漲價(jià),多家車企發(fā)布7月購(gòu)車新政策

每日經(jīng)濟(jì)新聞
2025-07-01 15:19:25
左宗棠收復(fù)新疆代價(jià)有多大?看陣亡了多少勛貴,數(shù)據(jù)名單觸目驚心

左宗棠收復(fù)新疆代價(jià)有多大?看陣亡了多少勛貴,數(shù)據(jù)名單觸目驚心

珺瑤婉史
2025-05-26 19:40:08
四姑娘山二峰有游客墜崖身亡?景區(qū)回應(yīng):屬實(shí),找到時(shí)已無(wú)生命體征

四姑娘山二峰有游客墜崖身亡?景區(qū)回應(yīng):屬實(shí),找到時(shí)已無(wú)生命體征

上游新聞
2025-07-01 12:41:04
拆遷全面叫停?已明確:2025年以后,樓齡超過(guò)20年的房子這樣處理

拆遷全面叫停?已明確:2025年以后,樓齡超過(guò)20年的房子這樣處理

巢客HOME
2025-07-01 07:25:03
故事:尼日爾賴掉4億美元,驅(qū)逐中企高管,我方留有后手完美反擊

故事:尼日爾賴掉4億美元,驅(qū)逐中企高管,我方留有后手完美反擊

星宇共鳴
2025-04-03 18:58:34
隊(duì)記:開(kāi)拓者希望運(yùn)營(yíng)好中文社媒;艾頓或不知道他在社媒歡迎楊瀚森

隊(duì)記:開(kāi)拓者希望運(yùn)營(yíng)好中文社媒;艾頓或不知道他在社媒歡迎楊瀚森

懂球帝
2025-07-01 15:20:23
Skip:盧卡&小里該抱怨沒(méi)得到詹姆斯的幫助 他在季后賽末節(jié)隱身

Skip:盧卡&小里該抱怨沒(méi)得到詹姆斯的幫助 他在季后賽末節(jié)隱身

直播吧
2025-07-01 16:13:11
為什么說(shuō)對(duì)大自然要保持敬畏之心,看完網(wǎng)友的各種分享,讓人后怕

為什么說(shuō)對(duì)大自然要保持敬畏之心,看完網(wǎng)友的各種分享,讓人后怕

熱鬧的河馬
2024-11-01 14:00:16
都說(shuō)趙雅芝的日子過(guò)得挺苦的,港媒爆料她被三個(gè)兒子長(zhǎng)期啃老呢。

都說(shuō)趙雅芝的日子過(guò)得挺苦的,港媒爆料她被三個(gè)兒子長(zhǎng)期啃老呢。

八斗小先生
2025-07-01 09:07:26
伊朗,現(xiàn)代人類文明的傷疤

伊朗,現(xiàn)代人類文明的傷疤

老爸講科學(xué)
2025-06-24 23:13:33
杜新枝鄰居揭露!28年前看見(jiàn)他們抱孩子回來(lái),就已清除不是親生的

杜新枝鄰居揭露!28年前看見(jiàn)他們抱孩子回來(lái),就已清除不是親生的

愛(ài)下廚的阿釃
2025-07-01 09:21:50
太瘋狂!香港,徹底爆了

太瘋狂!香港,徹底爆了

金融界
2025-07-01 07:47:37
泰國(guó)總理停職?三大結(jié)局全公開(kāi)!

泰國(guó)總理停職?三大結(jié)局全公開(kāi)!

叮當(dāng)當(dāng)科技
2025-07-01 12:00:38
晁蓋,不小心做了老大的二貨

晁蓋,不小心做了老大的二貨

二的十次方
2025-04-26 06:53:43
Skip:詹姆斯為啥能賺5.81億美元高薪?因?yàn)樗?2年都不降薪

Skip:詹姆斯為啥能賺5.81億美元高薪?因?yàn)樗?2年都不降薪

雷速體育
2025-07-01 16:11:49
岳云鵬開(kāi)演唱會(huì),票價(jià)比歌手還高,一出售20秒就被搶空

岳云鵬開(kāi)演唱會(huì),票價(jià)比歌手還高,一出售20秒就被搶空

柴叔帶你看電影
2025-06-30 15:23:06
江西富豪一家6口被殺害,丈夫裝死幸存,兇手曝光后令警方傻眼

江西富豪一家6口被殺害,丈夫裝死幸存,兇手曝光后令警方傻眼

罪案洞察者
2025-06-24 10:03:10
“媽媽,今天用不用洗頭”原來(lái)是全國(guó)統(tǒng)一的,網(wǎng)友:媽媽、媽媽…

“媽媽,今天用不用洗頭”原來(lái)是全國(guó)統(tǒng)一的,網(wǎng)友:媽媽、媽媽…

悠閑歷史
2025-06-30 14:32:42
夏朝若真存在,甲骨文為何只字不提?考古揭開(kāi):商朝滅的不叫夏朝

夏朝若真存在,甲骨文為何只字不提?考古揭開(kāi):商朝滅的不叫夏朝

尚曦讀史
2025-05-05 09:00:10
2025-07-01 16:36:49
軟測(cè)試驗(yàn)田
軟測(cè)試驗(yàn)田
軟件測(cè)試領(lǐng)域最新最前沿資訊
116文章數(shù) 127關(guān)注度
往期回顧 全部

科技要聞

1顆自研芯頂4顆英偉達(dá) 李斌自曝背后辛酸史

頭條要聞

美軍前司令抱怨主力預(yù)警機(jī)"嚴(yán)重過(guò)時(shí)":它看不見(jiàn)殲-20

頭條要聞

美軍前司令抱怨主力預(yù)警機(jī)"嚴(yán)重過(guò)時(shí)":它看不見(jiàn)殲-20

體育要聞

創(chuàng)造歷史!世俱杯首次亞洲球隊(duì)?wèi)?zhàn)勝歐洲

娛樂(lè)要聞

Baby現(xiàn)身新加坡!8歲兒子太像黃曉明

財(cái)經(jīng)要聞

習(xí)近平:縱深推進(jìn)全國(guó)統(tǒng)一大市場(chǎng)建設(shè)

汽車要聞

2026款MG Cyberster/MG5 兩款新車售5.99萬(wàn)起

態(tài)度原創(chuàng)

健康
手機(jī)
家居
公開(kāi)課
軍事航空

呼吸科專家破解呼吸道九大謠言!

手機(jī)要聞

小米公布 7 月服務(wù)周 8 折換電池機(jī)型,79.2 元起

家居要聞

中古通透 簡(jiǎn)約不失浪漫

公開(kāi)課

李玫瑾:為什么性格比能力更重要?

軍事要聞

涉伊核機(jī)密情報(bào)再泄露 白宮急了

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 广宁县| 黄山市| 望江县| 晴隆县| 宜宾市| 灵丘县| 巨鹿县| 曲周县| 华坪县| 麻栗坡县| 高平市| 新巴尔虎右旗| 阳江市| 汉源县| 安岳县| 武城县| 德钦县| 德庆县| 福安市| 当阳市| 登封市| 三门县| 蚌埠市| 修武县| 金坛市| 泰兴市| 纳雍县| 广德县| 葫芦岛市| 龙游县| 介休市| 汉中市| 靖西县| 沁阳市| 永宁县| 吴桥县| 黔西县| 大丰市| 大姚县| 洞头县| 渝中区|