1. 程式人生 > >java 類加載機制和反射機制

java 類加載機制和反射機制

lis 多線程 ati 加鎖 margin 對數 父類 p s list

1.類的加載機制
jvm把class文件加載到內存,並對數據進行校驗、解析和初始化,最終形成jvm可以直接使用的java類型的過程。
(1)加載
將class文件字節碼內容加載到內存中,並將這些靜態數據轉換成方法區中的運行時數據結構,在堆中生成一個代表這個類的java.lang.Class對象,作為方法區類數據的訪問入口。
(2)鏈接 將java類的二進制代碼合並到jvm的運行狀態之中的過程

    1. 驗證:確保加載的類信息符合jvm規範,沒有安全方面的問題。
    2. 準備:正式為類變量(static變量)分配內存並設置類變量初始值的階段,這些內存都將在方法區中進行分配。
    3. 解析:虛擬機常量池內的符號引用替換為直接引用的過程。(比如String s ="aaa",轉化為 s的地址指向“aaa”的地址)


(3)初始化
初始化階段是執行類構造器方法的過程。類構造器方法是由編譯器自動收集類中的所有類變量的賦值動作和靜態語句塊(static塊)中的語句合並產生的。
當初始化一個類的時候,如果發現其父類還沒有進行過初始化,則需要先初始化其父類的初始化
虛擬機會保證一個類的構造器方法在多線程環境中被正確加鎖和同步
當訪問一個java類的靜態域時,只有真正聲明這個靜態變量的類才會被初始化。
2.java反射機制
JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;


這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。

技術分享圖片

java 類加載機制和反射機制