類從被虛擬機加載到內存開始,結束於卸載出內存,這爲類的一個生命週期,其包括加載、驗證、準備、解析、初始化、使用、卸載這七個階段。

類加載全部過程,也就是加載、驗證、準備、解析、初始化這五個階段,下面來簡單的介紹一下。

加載

在加載階段,虛擬機主要完成這三個事情:

1、通過類的權限定名來尋找定義此類的二進制字節流。

2、將此二進制字節流所代表的靜態結構存儲在方法區中。

3、在內存中生成一個對象來代表此類作爲訪問此類數據的接口。

驗證

在這階段主要確保class文件的字節流符合虛擬機規範的要求,確保不會危害虛擬機。

準備

準備階段主要是爲類變量(被static修飾的變量)設置內存以及設置初始值(零值),比如,public static int a = 1;a在準備階段被賦予0值,不是本賦予1。

解析

在解析階段主要是虛擬機把常量池中的符號引用轉變爲直接引用的過程。

初始化

在初始化階段就是真正的爲類變量和其他資源賦值了,換句話說在這個階段是由程序員通過設置而決定的。其是在這一階段,就是虛擬機執行clinit方法,爲類變量賦值和初始化其它資源。clinit方法由虛擬機根據類是否存在類變量或者靜態區域自動生成的。

查看原文 >>
相關文章