1. 程式人生 > >Java中的基礎----JVM載入class檔案的原理

Java中的基礎----JVM載入class檔案的原理

Java是一種解釋型語言,class檔案只有被載入到JVM中才能執行。當執行指定程式時,JVM會將編譯生成的.class檔案按一定的規則(從硬碟)載入到記憶體中(由類載入器classLoader和它的子類來完成)。

有以下兩種載入方式:

1)隱式載入:

程式使用new等方式建立物件時,呼叫類的載入器把對應的類載入到JVM中。

2)顯式載入

程式直接呼叫class.forName()方法把所需的類載入到JVM中。

在Java中,類的載入是動態的,並不是一次性將所有類全部載入後才執行,即需要的時候才去載入相應的類class。

類的載入器分為3類:

1)系統類Bootstrap Loader---負責載入系統類(jre/lib/rt.jar的類)

2)擴充套件類ExtClassLoader ---負載載入擴充套件類(jar/lib/ext/*.jar的類)

3)自定義類AppClassLoader---負責載入應用類(classpath指定的目錄或者jar中的類)

當有類需要載入時,通過委託父類載入器來進行載入的方式進行。

類的載入步驟:

1)裝載---根據查詢路徑找到相應的class檔案,然後匯入。

2)連結---①檢查待載入的class檔案的正確性②給類中的靜態變數分配儲存空間③將符號引用轉換成直接引用(可選)。

3)初始化---對靜態變數和靜態程式碼塊執行初始化操作。(載入時執行一次)