理解JVM,大白話解釋

JVM

1、 定義

  1. 抽象化計算機
  2. 擁有本身的內存模型和指令系統
大白話:
一、所謂抽象化,就是針對現實世界的物理機
二、有了指令系統,執行引擎纔有存在的必要性
複製代碼

2、重點部分

一、Class文件

Class文件是一種二進制字節流,擁有嚴格的數據格式。bash

  • ①:二進制字節流:class文件是由 0101010 這樣的東西組成的,以1個字節(8位)讀取才有意義。數據結構

  • ②:嚴格的數據格式:前32位(即前4個字節)是魔術,接下來16位是次版本號,再日後16位是主版本號等spa

由於Class有本身的數據格式,因此,在Class字節流裏面,JVM能夠很順利的閱讀Class的語義,並轉化爲JVM的數據格式。code

P215頁 cdn

二、類加載器

看上面的圖最下面一行,爲何會說加載階段和鏈接階段是交叉運行的,我是這麼理解的blog

  • 第一步,JVM讀取Class文件的前32位(即U4),放到內存的一個特定的地方,爲何是特定地方,由於JVM也是有本身的數據結構的
  • 第二步,調用 鏈接階段的 「驗證」 功能,看看這個U4 是否是 CAFABABE這個魔數,若是不是的話,就不用加載了
  • 第三步,JVM讀取Class文件中接下來的32位,放到內存的另一個地方
  • 第四步,調用 驗證功能,看看這4個字節所解析的版本號,能不能被當前JVM解析

P166頁 內存

未完待續,下班了

相關文章
相關標籤/搜索