天天看點

JAVA的生命周期

加載,驗證,準備,解析,初始化,運作,解除安裝

1.加載:關于加載,其實,就是将源檔案的class檔案找到類的資訊将其加載到方法區中,

然後在堆區中執行個體化一個java.lang.Class對象,作為方法區中這個類的資訊的入口。

2.驗證:确定該類是否符合java語言的規範,有沒有屬性和行為的重複,繼承是否合理,總之,就是保證jvm能夠執行

3.準備:主要做的就是為由static修飾的成員變量配置設定記憶體,并設定預設的初始值

4.解析:這一階段的任務就是把常量池中的符号引用轉換為直接引用,說白了就是jvm會将所有的類或接口名、字段名、方法名轉換為具體的記憶體位址。

5.初始化:這個階段就是将靜态變量(類變量)指派的過程,即隻有static修飾的才能被初始化,執行的順序就是:

父類靜态域或着靜态代碼塊,然後是子類靜态域或者子類靜态代碼塊

6.使用 :在類的使用過程中依然存在三步:對象執行個體化、垃圾收集、對象終結

(1)對象執行個體化:就是執行類中構造函數的内容,如果該類存在父類JVM會通過顯示或者隐示的方式先執行父類的構造函數,在堆記憶體中為父類的執行個體變量開辟空間,并賦予預設的初始值,然後在根據構造函數的代碼内容将真正的值賦予執行個體變量本身,然後,引用變量擷取對象的首位址,通過操作對象來調用執行個體變量和方法

(2)垃圾收集:當對象不再被引用的時候,就會被虛拟機标上特别的垃圾記号,在堆中等待GC回收

(3)對象的終結:對象被GC回收後,對象就不再存在,對象的生命也就走到了盡頭

7.類解除安裝 :即類的生命周期走到了最後一步,程式中不再有該類的引用,該類也就會被JVM執行垃圾回收,從此生命結束