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

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

Class類文件加載機制

2019-11-11 04:55:23
字體:
來源:轉載
供稿:網友
在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程序代碼—————————————-類加載器:“通過一個類的全限定名來獲取描述此類的二進制字節流”,實現這個動作的代碼模塊稱為“類加載器”。雙親委派機制:如果一個類加載器收到了類加載的請求,它首先不會嘗試自己去加載這個類,而是把這個請求委派給父類加載器去完成,每一層的類加載器都是如此,因此所有的加載請求最終都應該被傳送到頂層啟動類的加載器中,只有父加載器反饋自己無法完成加載請求時,子加載器才會嘗試自己去加載。
上一篇:快速查找得出索引位置

下一篇:2.6小記

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沅陵县| 辉南县| 金沙县| 武汉市| 吉木萨尔县| 连平县| 镇雄县| 茌平县| 肇东市| 额敏县| 龙川县| 尼木县| 宝兴县| 蒲城县| 青海省| 安徽省| 沐川县| 江永县| 永嘉县| 万荣县| 渭源县| 东安县| 海兴县| 宣威市| 邵阳市| 定襄县| 黑水县| 栾城县| 德格县| 正宁县| 分宜县| 库车县| 宜宾市| 灌阳县| 信宜市| 绥阳县| 分宜县| 江孜县| 墨脱县| 墨脱县| 江安县|