理解JVM,大白話解釋

汐丶諾發表於2019-03-06

JVM

一、 定義

  1. 抽象化計算機
  2. 擁有自己的記憶體模型和指令系統
大白話:
1、所謂抽象化,就是針對現實世界的物理機
2、有了指令系統,執行引擎才有存在的必要性
複製程式碼

理解JVM,大白話解釋

二、重點部分

1、Class檔案

Class檔案是一種二進位制位元組流,擁有嚴格的資料格式。

  • ①:二進位制位元組流:class檔案是由 0101010 這樣的東西組成的,以1個位元組(8位)讀取才有意義。

  • ②:嚴格的資料格式:前32位(即前4個位元組)是魔術,接下來16位是次版本號,再往後16位是主版本號等

理解JVM,大白話解釋

因為Class有自己的資料格式,所以,在Class位元組流裡面,JVM可以很順利的閱讀Class的語義,並轉化為JVM的資料格式。

P215頁

理解JVM,大白話解釋

2、類載入器

看上面的圖最下面一行,為什麼會說載入階段和連線階段是交叉執行的,我是這麼理解的

  • 第一步,JVM讀取Class檔案的前32位(即U4),放到記憶體的一個特定的地方,為什麼是特定地方,因為JVM也是有自己的資料結構的
  • 第二步,呼叫 連線階段的 “驗證” 功能,看看這個U4 是不是 CAFABABE這個魔數,如果不是的話,就不用載入了
  • 第三步,JVM讀取Class檔案中接下來的32位,放到記憶體的另外一個地方
  • 第四步,呼叫 驗證功能,看看這4個位元組所解析的版本號,能不能被當前JVM解析

P166頁

理解JVM,大白話解釋

未完待續,下班了

相關文章