類加載過程筆記總結

類的加載過程包含:
類的加載-鏈接(驗證,準備,解析)-初始化
加載:
將java類的字節碼加載到內存中,在內存的方法區中生成類的運行時數據,堆中生成該類的class 對象作爲該類的運行入口。
運行時數據包含:靜態變量,靜態方法,常量池,類的代碼。

鏈接:
驗證:檢查代碼是否符合jvm的編碼規範,進行安全檢查。
準備:爲靜態變量分配內存並且初始化默認值。
解析:將代碼中的符號引用變成直接引用。

初始化:執行類構造器方法的過程
類分爲主動引用和被動引用兩種方式,
主動引用(一定會對類進行初始化)
如下情況是對類的主動引用:
1. 使用new 關鍵字實例化類對象
2. 調用類的靜態變量,靜態方法
3. 通過反射reflect 調用類
4. 啓動main方法的類一定會被初始化
5. 初始化一個類,如果父類沒有被初始化,一定先初始化其父類。

被動引用(不會對類進行初始化):
如下情況對類不會進行初始化:
1. 引用常量,不會觸發此類的初始化
2. 當通過數組定義類引用,也不會對該類初始化如:A[] as = new A[10];
3. 訪問靜態變量時,真正聲明這個靜態變量的類纔會被初始化,繼承的子類並不會被初始化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章