国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

JVM結構--類加載

0
分享至

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


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


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


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


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


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

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

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.

相關推薦
熱點推薦
大一女生赴泰潑水節(jié)被賣緬甸園區(qū),5次脫身機會全錯過,至今未歸

大一女生赴泰潑水節(jié)被賣緬甸園區(qū),5次脫身機會全錯過,至今未歸

洞見小能手
2026-04-26 17:13:50
再見貝林厄姆!皇馬天才回歸!顏值高實力強,高層醞釀變革

再見貝林厄姆!皇馬天才回歸!顏值高實力強,高層醞釀變革

阿泰希特
2026-04-26 15:25:32
曾毓群一聲咳嗽,李斌欲言又止

曾毓群一聲咳嗽,李斌欲言又止

版面之外
2026-04-26 07:53:41
突發(fā)槍擊后,特朗普發(fā)了一張照片,并否認與伊朗戰(zhàn)爭有關!嫌疑人身份曝光:系加州31歲男子,持霰彈槍試圖突破安保,一名特工遭到槍擊

突發(fā)槍擊后,特朗普發(fā)了一張照片,并否認與伊朗戰(zhàn)爭有關!嫌疑人身份曝光:系加州31歲男子,持霰彈槍試圖突破安保,一名特工遭到槍擊

每日經(jīng)濟新聞
2026-04-26 11:35:06
為陪男閨蜜去云南,我拉黑老公7天,回家后得知兒子手術,我懵了

為陪男閨蜜去云南,我拉黑老公7天,回家后得知兒子手術,我懵了

小影的娛樂
2026-04-26 08:41:36
莫迪這次被狠狠宰了,尿素價格翻倍,印度買250萬噸,無奈接盤

莫迪這次被狠狠宰了,尿素價格翻倍,印度買250萬噸,無奈接盤

點燃好奇心
2026-04-25 16:11:43
演都不演了!電詐園松口放人前,先提了一個要求,父親察覺不對勁

演都不演了!電詐園松口放人前,先提了一個要求,父親察覺不對勁

八斗小先生
2026-04-25 13:55:54
白酒再次被關注!醫(yī)生發(fā)現(xiàn):腦梗病人喝白酒,不用多久或有4變化

白酒再次被關注!醫(yī)生發(fā)現(xiàn):腦梗病人喝白酒,不用多久或有4變化

蜉蝣說
2026-04-07 17:45:02
央視小尼離婚后單身至今,原因曝光:不是放不下前妻,是放不下她

央視小尼離婚后單身至今,原因曝光:不是放不下前妻,是放不下她

翰飛觀事
2026-04-10 14:59:12
替補43分!多森姆季后賽大爆發(fā),火箭沒交易輸麻?

替補43分!多森姆季后賽大爆發(fā),火箭沒交易輸麻?

籃球實錄
2026-04-26 14:57:26
東北沒有黑幫,只有“刀槍炮”:一場對香港百年社團的降維打擊

東北沒有黑幫,只有“刀槍炮”:一場對香港百年社團的降維打擊

黃麗搞笑小能手
2026-04-15 06:27:15
陳云晚年首次披露:遵義會議上這兩個人死活不同意毛主席,吵得面紅耳赤

陳云晚年首次披露:遵義會議上這兩個人死活不同意毛主席,吵得面紅耳赤

老杉說歷史
2026-03-21 17:38:44
騙了全世界17年!保鏢臨終日記揭開邁克杰克遜死前最凄涼的真相

騙了全世界17年!保鏢臨終日記揭開邁克杰克遜死前最凄涼的真相

自說自話的總裁
2026-04-24 17:23:51
網(wǎng)友拿光明會成立250周年來質(zhì)疑華晨宇,粉絲被氣得不行

網(wǎng)友拿光明會成立250周年來質(zhì)疑華晨宇,粉絲被氣得不行

映射生活的身影
2026-04-25 18:10:22
山東大漢場均20+6,榮膺本土得分王,合同到期,或回家鄉(xiāng)加盟山東

山東大漢場均20+6,榮膺本土得分王,合同到期,或回家鄉(xiāng)加盟山東

萌蘭聊個球
2026-04-26 16:31:06
籌碼集中!最新股東戶數(shù)環(huán)比減少20%以上的公司一覽(2026.4.26)

籌碼集中!最新股東戶數(shù)環(huán)比減少20%以上的公司一覽(2026.4.26)

A股數(shù)據(jù)表
2026-04-26 07:10:06
中國第四艘航母官宣!人民海軍用兩字通告全球,首艘核航母要來了

中國第四艘航母官宣!人民海軍用兩字通告全球,首艘核航母要來了

策前論
2026-04-25 19:15:24
汪小菲學乖了,馬筱梅期待的隆重百日宴可能要泡湯了

汪小菲學乖了,馬筱梅期待的隆重百日宴可能要泡湯了

一盅情懷
2026-04-26 16:15:13
太缺德!門口突然添兩座墳,開門就能見到,孩子晚上嚇得不敢出門

太缺德!門口突然添兩座墳,開門就能見到,孩子晚上嚇得不敢出門

川渝視覺
2026-04-19 21:31:23
和張也分手后,他娶小27歲粉絲女兒,現(xiàn)淪為老賴,在上海酒吧謀生

和張也分手后,他娶小27歲粉絲女兒,現(xiàn)淪為老賴,在上海酒吧謀生

青橘罐頭
2026-04-26 16:58:31
2026-04-26 17:59:00
軟測試驗田
軟測試驗田
軟件測試領域最新最前沿資訊
117文章數(shù) 128關注度
往期回顧 全部

科技要聞

漲價浪潮下,DeepSeek推動AI“價格戰(zhàn)”

頭條要聞

美國網(wǎng)民質(zhì)疑:為什么先救萬斯

頭條要聞

美國網(wǎng)民質(zhì)疑:為什么先救萬斯

體育要聞

森林狼3比1掘金:逆境中殺出了多孫穆?!

娛樂要聞

僅次《指環(huán)王》的美劇,有第二季

財經(jīng)要聞

中辦、國辦:加強新就業(yè)群體服務管理

汽車要聞

預售19.38萬元起 哈弗猛龍PLUS七座版亮相

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

親子
房產(chǎn)
藝術
家居
軍事航空

親子要聞

給寶寶的輔食太精細,危害不是一般大,家長們早了解早安心

房產(chǎn)要聞

新一輪教育大爆發(fā)來了!?冢_始瘋狂建學校!

藝術要聞

東漢最美的一幅隸書!這才是中華筆法根源,當代99%的人沒有見過!

家居要聞

自然肌理 溫潤美學

軍事要聞

伊朗總統(tǒng):不會在壓力、威脅下進行談判

無障礙瀏覽 進入關懷版