JAVA-大白話探索JVM-類加載過程(二)

首先咱們知道JVM是什麼以及類加載器的做用

不清楚的能夠看看
JAVA-大白話探索JVM-類加載器(一)java

如今咱們來摸索下類的加載過程


首先,咱們將類加載過程分爲三步走數據結構

  1. 裝載
  2. 連接
  3. 初始化

其中 連接 分爲三步驟指針

圖1

1.裝載

  • 經過一個類的全限定名獲取其定義的二進制字節流
  • 將這個字節流所表明的靜態存儲結構轉化爲方法區的運行時數據結構
  • 在堆中生成一個表明這個類的java.lang.Class對象,做爲對方法區中這些數據的訪問入口

2.連接

  1. 驗證code

    • 確保Class文件的字節流信息符合JVM的要求對象

    • 4個階段校驗(文件格式校驗、元數據校驗、字節碼校驗、符號引用校驗)blog

    • 驗證階段是很是重要的,但不是必須的,它對程序運行期沒有影響,若是所引用的類通過反覆驗證,那麼能夠考慮採用-Xverifynone參數來關閉大部分的類驗證措施,以縮短虛擬機類加載的時間。內存

  2. 準備開發

    • 爲類的靜態變量(static)分配內存,並將其初始化爲默認值
  3. 解析get

    • 把類中的符號引用轉換爲直接引用虛擬機

    • 符號引用就是一組符號來描述目標,能夠是任何字面量。

    • 直接引用就是直接指向目標的指針、相對偏移量或一個間接定位到目標的句柄。

3.初始化

對類的靜態變量,靜態代碼塊執行初始化操做

版權聲明:本文爲不會代碼的小白原創文章,轉載需添加小白地址 :https://www.ccode.live/bertonlee/list/7

歡迎關注

歡迎關注公衆號「碼上開發」,天天分享最新技術資訊

相關文章
相關標籤/搜索