JAVA-大白話探索JVM-類加載過程(二)
阿新 • • 發佈:2019-01-22
-c 我們 轉換 class文件 獲取 類的加載 關註 添加 操作
首先我們知道JVM是什麽以及類加載器的作用
不清楚的可以看看
JAVA-大白話探索JVM-類加載器(一)
現在我們來摸索下類的加載過程
首先,我們將類加載過程分為三步走
- 裝載
- 鏈接
- 初始化
其中 鏈接 分為三步驟
1.裝載
- 通過一個類的全限定名獲取其定義的二進制字節流
- 將這個字節流所代表的靜態存儲結構轉化為方法區的運行時數據結構
- 在堆中生成一個代表這個類的java.lang.Class對象,作為對方法區中這些數據的訪問入口
2.鏈接
-
驗證
-
確保Class文件的字節流信息符合JVM的要求
-
4個階段校驗(文件格式校驗、元數據校驗、字節碼校驗、符號引用校驗)
-
驗證階段是非常重要的,但不是必須的,它對程序運行期沒有影響,如果所引用的類經過反復驗證,那麽可以考慮采用-Xverifynone參數來關閉大部分的類驗證措施,以縮短虛擬機類加載的時間。
-
-
準備
- 為類的靜態變量(static)分配內存,並將其初始化為默認值
-
解析
-
把類中的符號引用轉換為直接引用
-
符號引用就是一組符號來描述目標,可以是任何字面量。
-
直接引用就是直接指向目標的指針、相對偏移量或一個間接定位到目標的句柄。
-
3.初始化
對類的靜態變量,靜態代碼塊執行初始化操作
版權聲明:本文為不會代碼的小白原創文章,轉載需添加小白地址 :https://www.ccode.live/bertonlee/list/7
歡迎關註
歡迎關註公眾號“碼上開發”,每天分享最新技術資訊
JAVA-大白話探索JVM-類加載過程(二)