国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 中卫市| 巴林右旗| 囊谦县| 南雄市| 温州市| 神木县| 德兴市| 万源市| 房产| 洞口县| 靖西县| 股票| 房产| 清水河县| 衡阳县| 大足县| 平陆县| 黑山县| 黔南| 乌审旗| 漯河市| 尉犁县| 额济纳旗| 闵行区| 久治县| 广南县| 通许县| 叶城县| 临武县| 正定县| 宾川县| 富锦市| 长垣县| 湟中县| 司法| 多伦县| 双桥区| 沈丘县| 沙湾县| 平乡县| 崇信县|