jvm-004
1、在java代碼中,類型的加載、連接、初始化都是在程序運行期間完成的。
2、優點:java是一門靜態語言,在程序運行期間進行類的加載、連接和初始化可以爲java語言提供更大的靈活性(如動態代理),增加了很多的靈活性,爲java提供了動態語言的特性。
3、類型的加載、連接、初始化是按照順序開始執行的,某一個階段的執行並不是一定要等到它的上一個階段結束之後才進行下一步,各個步驟之間是可以交叉執行的。
4、java虛擬機的生命週期:
結束虛擬機結束的4中情況:
A:執行System.exist();
B:程序正常執行結束;
C:程序在執行過程中遇到了異常情況,不斷向上拋異常,直到啓動類;
D:由於操作系統的錯誤導致的虛擬機的退出。
5、類的加載
查找並加載類的二進制數據到內存中,並生成一個java.lang.Object對象。
6、連接
驗證:確保被加載類的正確性;
準備:爲靜態變量分配內存,並將其賦值爲零值(0或null);
解析:把類中的符號引用轉化爲直接引用的過程。
7、初始化
按照代碼的邏輯,將靜態變量賦予正確初始值的過程。
8、類的使用
創建對象或調用方法、屬性等;
9、類的卸載
類的生命週期的結束。