天天看點

JVM核心機制,類加載全過程

1.類加載機制

   -JVM把class檔案加載到記憶體,并對資料進行校驗、解析和初始化,最終形成JVM可以直接使用的java類的全過程。

JVM核心機制,類加載全過程

 -加載

     ·将class檔案的位元組碼記憶體加載到記憶體當中,并将這些靜态資料換成方法區中的運作時資料結構,在堆中生成一個

一個代表這個類的java.lang.Class對象,作為方法區類資料的通路入口。這個過程需要加載器參與。

JVM核心機制,類加載全過程

-連結 将java類的二進制代碼合并到JVM的運作狀态之中去

         ·驗證:確定加載的類資訊符合JVM規範,沒有安全方面的問題。

         ·準備:正式為類變量(static變量)配置設定記憶體并且設定類變量的初始化的階段,這些記憶體都将在方法區中進行配置設定。

         ·解析:虛拟機常量池内的符号引用替換為直接引用的過程。

-初始化

         ·初始化階段是執行類構造器<clinit>()方法的過程。類構造器<clinit>()方法是由編譯器自動收集類中的所有類變量的指派動作。

          和靜态語句塊(static塊)中語句合并産生。

         ·當初始化一個類的時候,如果發現其父類還沒有初始化就先對其父類進行初始化。

         ·虛拟機會保證一個類構造器<clinit>()方法在多線程環境中被正确的加鎖和同步。

JVM核心機制,類加載全過程

注意:類和靜态代碼塊隻會被加載一次。

JVM核心機制,類加載全過程