類從被加載到虛擬機內存開始到卸載內存爲止,整個生命週期包括:加載、驗證、準備、解析、初始化、使用和卸載java
類必須當即初始化狀況:安全
是鏈接階段的第一步,這個階段的目的是爲了確保Class文件的字節流中包含的信息符合當前虛擬機的要求,並不會危害虛擬機的自身安全。數據結構
文件格式驗證指針
第一階段驗證字節流是否符合Class文件格式規範,並能被當前版本虛擬機處理。cdn
雲數據驗證對象
第二階段對字節碼描述的信息進行語義分析,確保描述信息符合Java語言要求規範。blog
字節碼驗證接口
第三階段對類的方法體進行校驗分析,保證被校驗的方法在運行時不會出現危害虛擬機的安全事件。生命週期
符號引用驗證事件
對類自身之外(常量池中的各類符號引用)的信息進行匹配校驗。
正式爲變量分配內存並設置初始值的階段,這些變量使用的內存將在方法區中分配。僅包括類變量(被static修飾)不包括實例變量。賦初值是指數據類型的零值。
將常量池中的符號引用替換爲直接引用。
執行類中定義的Java程序代碼,初始化階段是執行類構造器(<clinit>())方法的過程。
啓動類加載器、擴展類加載器、應用程序類加載器。
雙親委派模型要求除了頂層的啓動類加載器外,其他的類加載器都應當有本身的父類加載器。這裏的類加載器的父子關係通常是組合關係來複用父加載器的代碼。
歡迎掃碼關注我 😊