1. 程式人生 > >類的加載過程?

類的加載過程?

static 自定義類 類的加載 類加載器 檢查 變量 微軟雅黑 轉換 span

加載->鏈接(驗證,準備,解析)->初始化->啟動->卸載

加載:

1.從一個類的全限定名來獲取該類的二進制字節流

2.將該字節流所代表的靜態儲存結構轉換成方法區的運行時的數據結構

3.java堆中生成一個該類的Class對象,作為方法區訪問這些數據的入口

(Bootstrap ClassLoader java_home/lib,Extension ClassLoader java_home/lib/ext,

App ClassLoader classpath下的類庫<檢查順序從後往前,加載順序從前往後>)

鏈接:

驗證:確保類的正確性

準備:為類的靜態變量分配內存

,並且賦上初始值

解析:把類的符號引用轉換成直接引用,

初始化:為類的靜態變量賦予正確的初始值

類加載最後一個階段,前面的類加載階段之後,除了在加載階段可以自定義類加載器以外,其它操作都由JVM主導。到了初始階段,才開始真正執行類中定義的Java程序代碼。

1.new該類的對象

2.使用該類的靜態變量或者賦值

3.調用該類的靜態方法

4.反射

5.創建該類的子類

6.將該類設置為JVM的啟動類

初始化順序依次是:(靜態變量、靜態初始化塊)>(變量、初始化塊)–> 構造器;如果有父類,則順序是:父類static方法 –> 子類static方法 –> 父類構造方法- ->

子類構造方法

類的加載過程?