国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

Class類文件加載機制

2019-11-11 04:22:41
字體:
供稿:網(wǎng)友
在class文件中描述的各種信息,最終都需要被加載到虛擬機中之后,才能被運行和使用。虛擬機把描述類的數(shù)據(jù)從class文件加載到內(nèi)存,并對數(shù)據(jù)進行校驗,轉(zhuǎn)換,解析和初始化,最終形成可以被虛擬機直接使用的java類型,這就是虛擬機的類加載機制。類加載的時機: 類從被加載到虛擬機內(nèi)存開始,到卸載出內(nèi)存為止,其生命周期包括:加載(loading),驗證(verification),準備(PReparation),解析(resolution),初始化(initialization),使用(using),卸載(unloading)。需要對類進行初始化的情況:1.遇到new,jestatic,putstatic,invokestatic這四條字節(jié)碼指令。場景:使用new關(guān)鍵字實例化對象,讀取或設(shè)置一個類的靜態(tài)字段,調(diào)用一個類的靜態(tài)方法2.使用java.lang.Reflect包的方法對類進行反射調(diào)用時。3.當初始化一個類的時候,如果發(fā)現(xiàn)其父類還沒有進行過初始化。4.當虛擬機啟動時,用戶需要指定一個要執(zhí)行的主類,虛擬機會先初始化這個主類。類加載過程:加載:1.通過一個類的全限定名來獲取定義此類的二進制字節(jié)流。2.將這個字節(jié)流所代表的靜態(tài)存儲結(jié)構(gòu)轉(zhuǎn)化為方法區(qū)的運行時數(shù)據(jù)結(jié)構(gòu)3.在java堆中生成代表這個類的java.lang.Class對象,作為方法區(qū)這些數(shù)據(jù)的訪問入口。驗證:具體包括1.文件格式驗證;2.元數(shù)據(jù)驗證;3.字節(jié)碼驗證;4.符號引用驗證;準備:準備階段是正式為類變量分配內(nèi)存并設(shè)置類變量初始值的階段,這些內(nèi)存都將在方法區(qū)進行分配。注意:這時候進行內(nèi)存分配的僅包括類變量(被static修飾的變量),而不包括實例變量,實例變量將在對象實例化的時候隨著對象的實例一起被分配到j(luò)ava堆中。解析:虛擬機將常量池內(nèi)的符號引用替換為直接引用的過程初始化:到初始化階段,才真正開始執(zhí)行類中定義的java程序代碼—————————————-類加載器:“通過一個類的全限定名來獲取描述此類的二進制字節(jié)流”,實現(xiàn)這個動作的代碼模塊稱為“類加載器”。雙親委派機制:如果一個類加載器收到了類加載的請求,它首先不會嘗試自己去加載這個類,而是把這個請求委派給父類加載器去完成,每一層的類加載器都是如此,因此所有的加載請求最終都應(yīng)該被傳送到頂層啟動類的加載器中,只有父加載器反饋自己無法完成加載請求時,子加載器才會嘗試自己去加載。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 玉屏| 吴川市| 洮南市| 潼南县| 海兴县| 当阳市| 兴和县| 政和县| 马龙县| 连江县| 瓮安县| 柏乡县| 湖南省| 阳西县| 习水县| 临武县| 南乐县| 东至县| 偃师市| 铁岭县| 丹凤县| 都昌县| 千阳县| 新乐市| 河池市| 南华县| 汽车| 长泰县| 许昌市| 淮南市| 吉安县| 五指山市| 丁青县| 安泽县| 乐陵市| 明水县| 宾川县| 轮台县| 南汇区| 怀宁县| 临桂县|