1.類加載機制
-JVM把class檔案加載到記憶體,并對資料進行校驗、解析和初始化,最終形成JVM可以直接使用的java類的全過程。
-加載
·将class檔案的位元組碼記憶體加載到記憶體當中,并将這些靜态資料換成方法區中的運作時資料結構,在堆中生成一個
一個代表這個類的java.lang.Class對象,作為方法區類資料的通路入口。這個過程需要加載器參與。
-連結 将java類的二進制代碼合并到JVM的運作狀态之中去
·驗證:確定加載的類資訊符合JVM規範,沒有安全方面的問題。
·準備:正式為類變量(static變量)配置設定記憶體并且設定類變量的初始化的階段,這些記憶體都将在方法區中進行配置設定。
·解析:虛拟機常量池内的符号引用替換為直接引用的過程。
-初始化
·初始化階段是執行類構造器<clinit>()方法的過程。類構造器<clinit>()方法是由編譯器自動收集類中的所有類變量的指派動作。
和靜态語句塊(static塊)中語句合并産生。
·當初始化一個類的時候,如果發現其父類還沒有初始化就先對其父類進行初始化。
·虛拟機會保證一個類構造器<clinit>()方法在多線程環境中被正确的加鎖和同步。
注意:類和靜态代碼塊隻會被加載一次。