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

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

類的加載過程

2019-11-06 09:36:48
字體:
來源:轉載
供稿:網友

類從加載到虛擬機到卸載,它的整個生命周期包括:加載(Loading),驗證(Validation),準備(PReparation),解析(Resolution),初始化(Initialization),使用(Using)和卸載(Unloading)。其中,驗證、準備和解析部分被稱為連接(Linking)。 加載:

在加載階段,虛擬機主要完成三件事:1.通過一個類的全限定名來獲取定義此類的二進制字節流。2.將這個字節流所代表的靜態存儲結構轉化為方法區域的運行時數據結構。3.在java堆中生成一個代表這個類的java.lang.Class對象,作為方法區域數據的訪問入口。

驗證:

驗證階段作用是保證Class文件的字節流包含的信息符合JVM規范,不會給JVM造成危害。如果驗證失敗,就會拋出一個java.lang.VerifyError異常或其子類異常。驗證過程分為四個階段:1.文件格式驗證:驗證字節流文件是否符合Class文件格式的規范,并且能被當前虛擬機正確的處理。2.元數據驗證:是對字節碼描述的信息進行語義分析,以保證其描述的信息符合Java語言的規范。3.字節碼驗證:主要是進行數據流和控制流的分析,保證被校驗類的方法在運行時不會危害虛擬機。4.符號引用驗證:符號引用驗證發生在虛擬機將符號引用轉化為直接引用的時候,這個轉化動作將在解析階段中發生。

準備:

準備階段為變量分配內存并設置類變量的初始化。在這個階段分配的僅為類的變量(static修飾的變量),而不包括類的實例變量。對已非final的變量,JVM會將其設置成“零值”,而不是其賦值語句的值:

pirvate static int size = 12;

那么在這個階段,size的值為0,而不是12。 final修飾的類變量將會賦值成真實的值。

解析:

解析過程是將常量池內的符號引用替換成直接引用。主要包括四種類型引用的解析。類或接口的解析、字段解析、方法解析、接口方法解析。

初始化:

在準備階段,類變量已經經過一次初始化了,在這個階段,則是根據程序員通過程序制定的計劃去初始化類的變量和其他資源。這些資源有static{}塊,構造函數,父類的初始化等。 至于使用和卸載階段階段,這里不再過多說明,使用過程就是根據程序定義的行為執行,卸載由GC完成。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 馆陶县| 巴林左旗| 南开区| 祥云县| 内江市| 遵义县| 白城市| 西乌珠穆沁旗| 碌曲县| 濉溪县| 宜川县| 高碑店市| 上犹县| 石城县| 孟州市| 瑞丽市| 方城县| 客服| 碌曲县| 太仓市| 米泉市| 泸水县| 枞阳县| 汝城县| 富川| 天峨县| 锡林浩特市| 文成县| 临桂县| 怀柔区| 洮南市| 梅河口市| 韶山市| 望城县| 中方县| 武汉市| 浦江县| 嘉鱼县| 门源| 凤城市| 东至县|