Java虛擬機JVM學習01 流程概述
Java虛擬機與程序的生命周期
一個運行時的Java虛擬機(JVM)負責運行一個Java程序。
當啟動一個Java程序時,一個虛擬機實例誕生;當程序關閉退出,這個虛擬機實例也就隨之消亡。
如果在同一台計算機上同時運行多個Java程序,將得到多個Java虛擬機實例,每個Java程序都運行於它自己的Java虛擬機實例中。
在如下幾種情況下,Java虛擬機將結束生命周期:
1.執行了System.exit()方法
2.程序正常執行結束
3.程序在執行過程中遇到了異常或錯誤而異常終止
4.由於操作系統出現錯誤而導致Java虛擬機進程終止
類加載器ClassLoader
.java文件編譯生成.class文件,需要裝載到內存里面執行,裝載到內存里面這個事情就是由類加載器完成的。
程序執行之前,會進行類的加載、連接與初始化

1.加載
查找並加載類的二進制數據。
2.連接
連接又分為三個步驟:
驗證:確保被加載類的正確性。
即驗證class文件是否符合JVM的要求。
准備:為類的靜態變量分配內存,並將其初始化為默認值。
解析:把類中的符號引用轉換為直接引用。
參見:Java虛擬機JVM學習03 連接過程:驗證、准備、解析
3.初始化
為類的靜態變量賦予正確的初始值,即在程序里為靜態變量指定的初始值,或靜態代碼塊中的賦值操作。
靜態代碼塊是從上到下順序執行的,可以對一個靜態變量多次賦值,最后的結果為靜態變量的初始值。
參考資料
聖思園張龍老師Java SE系列視頻教程。
