天天看點

JVM學習-類加載

在Java代碼中,類型的加載、連接配接與初始化過程都是在程式運作期間完成的。

注意:是類型,即類、接口等,與具體的對象無關

1、加載:絕大情況是把已經編譯好的class位元組碼檔案從磁盤裝載到記憶體中。也存在動态生成的位元組碼檔案,如動态代理。

2、連接配接:過程非常多。大緻有三步:

(1)驗證:驗證位元組碼檔案的正确性;

(2)準備:将類的靜态變量配置設定記憶體,并初始化為預設值;

(3)解析:把類的符号引用轉為直接引用。

3、初始化:為類的靜态變量賦予正确的初始值

類的初始化步驟:

1、假如這個類還沒有被加載和連接配接,那就先進行加載和連接配接

2、假如類存在直接父類,并且這個父類還沒有被初始化,那就先初始化直接父類。但是并這條規則并不适用于接口,即不會初始化它的父接口。

(是以,一個父接口不會因為它的子接口或者實作類的初始化而初始化。隻有當程式首次使用特定接口的靜态變量時,才會導緻該接口的初始化。)

3、假如類中存在初始化語句,那就依次執行這些初始化語句

類加載器:将類加載到jvm記憶體當中