android複習路之類的加載篇

類加載的全部過程分爲5個階段:加載,驗證,準備,解析,初始化。

1.加載 

(1)加載二進制文件

根據包名+類名獲得二進制文件流,虛擬機沒有規定文件從哪裏來只要符合規範就行。由類的加載器來決定字節流的來源。

(2)生成方法區的數據結構

根據前一步讀取的字節留,在方法區創建運行時的數據結構

(3)創建class的實例

在java堆中創建java.lang.class 的實例作文代碼方位類型數據的外部接口。

2.驗證

(1)文件格式驗證

驗證字節流是否符合class文件的規範。

(2)元數據驗證

驗證class文件的描述是否符合java的語言規範。

(3)字節碼驗證

對類方法進行驗證確保方法運行是不會做出危害虛擬的行爲。

(4)引用符驗證

在解析階段直接引用常量的時候先要驗證符號引用

3.準備

(1)在方法區內爲static field分配內存並設置初始值

static 變量 在此處設置的初始值是java虛擬機設定的值。

static final 變量 在此設定的就是你定義的值。

4.解析

(1)解析類或接口

(2)解析字段

(3)類方法解析

(4)接口方法解析

5.初始化

執行<clint>(),<clint>中包含了對類中所有的變量賦值動作和和靜態代碼塊裏面的語句。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章