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

首頁 > 學院 > 開發設計 > 正文

Class類文件加載機制

2019-11-11 04:52:18
字體:
來源:轉載
供稿:網友
在class文件中描述的各種信息,最終都需要被加載到虛擬機中之后,才能被運行和使用。虛擬機把描述類的數據從class文件加載到內存,并對數據進行校驗,轉換,解析和初始化,最終形成可以被虛擬機直接使用的java類型,這就是虛擬機的類加載機制。類加載的時機: 類從被加載到虛擬機內存開始,到卸載出內存為止,其生命周期包括:加載(loading),驗證(verification),準備(PReparation),解析(resolution),初始化(initialization),使用(using),卸載(unloading)。需要對類進行初始化的情況:1.遇到new,jestatic,putstatic,invokestatic這四條字節碼指令。場景:使用new關鍵字實例化對象,讀取或設置一個類的靜態字段,調用一個類的靜態方法2.使用java.lang.Reflect包的方法對類進行反射調用時。3.當初始化一個類的時候,如果發現其父類還沒有進行過初始化。4.當虛擬機啟動時,用戶需要指定一個要執行的主類,虛擬機會先初始化這個主類。類加載過程:加載:1.通過一個類的全限定名來獲取定義此類的二進制字節流。2.將這個字節流所代表的靜態存儲結構轉化為方法區的運行時數據結構3.在java堆中生成代表這個類的java.lang.Class對象,作為方法區這些數據的訪問入口。驗證:具體包括1.文件格式驗證;2.元數據驗證;3.字節碼驗證;4.符號引用驗證;準備:準備階段是正式為類變量分配內存并設置類變量初始值的階段,這些內存都將在方法區進行分配。注意:這時候進行內存分配的僅包括類變量(被static修飾的變量),而不包括實例變量,實例變量將在對象實例化的時候隨著對象的實例一起被分配到java堆中。解析:虛擬機將常量池內的符號引用替換為直接引用的過程初始化:到初始化階段,才真正開始執行類中定義的java程序代碼—————————————-類加載器:“通過一個類的全限定名來獲取描述此類的二進制字節流”,實現這個動作的代碼模塊稱為“類加載器”。雙親委派機制:如果一個類加載器收到了類加載的請求,它首先不會嘗試自己去加載這個類,而是把這個請求委派給父類加載器去完成,每一層的類加載器都是如此,因此所有的加載請求最終都應該被傳送到頂層啟動類的加載器中,只有父加載器反饋自己無法完成加載請求時,子加載器才會嘗試自己去加載。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桑日县| 炉霍县| 乌兰浩特市| 海盐县| 浑源县| 米林县| 阳江市| 修文县| 绥棱县| 建昌县| 临沂市| 齐齐哈尔市| 朝阳县| 二手房| 乡城县| 阿克苏市| 霍林郭勒市| 兴和县| 闽清县| 禄劝| 临潭县| 博白县| 延津县| 西充县| 裕民县| 霞浦县| 金乡县| 神木县| 离岛区| 灌云县| 容城县| 宝山区| 鹤庆县| 靖安县| 舞阳县| 宜川县| 文安县| 海伦市| 吴忠市| 乌鲁木齐县| 昆山市|