Java類載入機制

2021-07-29 21:47:58 字數 634 閱讀 7512

解析階段是虛擬機器將常量池內的符號引用替換為直接引用的過程。

符號引用(symbolic reference):符號引用以一組符號來描述所引用的目標,符號引用可以是任何形式的字面量,符號引用與虛擬機器實現的記憶體布局無關,引用的目標並不一定已經在記憶體中。

直接引用(direct reference):直接引用可以是直接指向目標的指標、相對偏移量或是乙個能間接定位到目標的控制代碼。直接引用是與虛擬機器實現的記憶體布局相關的,同乙個符號引用在不同的虛擬機器例項上翻譯出來的直接引用一般都不相同,如果有了直接引用,那引用的目標必定已經在記憶體中存在。

1、類或介面的解析:判斷所要轉化成的直接引用是對陣列型別,還是普通的物件型別的引用,從而進行不同的解析。

2、字段解析:對欄位進行解析時,會先在本類中查詢是否包含有簡單名稱和字段描述符都與目標相匹配的字段,如果有,則查詢結束;如果沒有,則會按照繼承關係從上往下遞迴搜尋該類所實現的各個介面和它們的父介面,還沒有,則按照繼承關係從上往下遞迴搜尋其父類,直至查詢結束。

3、類方法解析:對類方法的解析與對字段解析的搜尋步驟差不多,只是多了判斷該方法所處的是類還是介面的步驟,而且對類方法的匹配搜尋,是先搜尋父類,再搜尋介面。

4、介面方法解析:與類方法解析步驟類似,只是介面不會有父類,因此,只遞迴向上搜尋父介面就行了。

初始化

java類載入機制

載入類時,每個類載入器總是首先將家在任務交給父類載入器,若父類載入器載入不到,自己才去載入 bootstrap loader時最頂級的載入器,其父載入器為null test test new test 11j class testclass test.getclass classloader cla...

Java類載入機制

在虛擬機器的生命週期中乙個類只被載入一次。類載入的原則 延遲載入,能少載入就少載入,因為虛擬機器的空間是有限的。類載入的時機 1 第一次建立物件要載入類.2 呼叫靜態方法時要載入類,訪問靜態屬性時會載入類。3 載入子類時必定會先載入父類。4 建立物件引用不載入類.5 子類呼叫父類的靜態方法時 1 當...

java 類載入機制

虛擬機器將class檔案的資訊載入到記憶體,並對資料進行校驗,轉換解析和初始化,這就是類載入機制。類從被載入到記憶體,到解除安裝出記憶體,需要經過幾個階段 載入 通過類名獲取該類的位元組流 驗證 驗證class位元組流 準備 進行類變數記憶體分配,即static變數,如private static ...