Jvm體系結構
- JVM : java虛拟機,模拟計算機達到計算所具有的計算功能。
- 包括幾個組成部分:
- 1 指令集 -計算機識别的機器語言的指令集合
- 2 計算單元 -識别并控制指令執行的功能子產品
- 3 尋址方式 - 位址的資訊,運作規則等。
- 4 寄存器定義-包括多種寄存器的定義、數量和使用方式。
- 5 存儲單元-能夠存儲操作數和儲存操作結構的單元。比如: 記憶體和磁盤。
- 以上五個部分和代碼關聯最密切的是指令集部分。
- 包括幾個組成部分:
- 指令集:
- 在cpu中用來計算和控制計算機系統的一套指令的集合。是展現CPU性能的一個重要名額。
- 主流的有精簡指令集和複雜指令集。通常使用的是複雜指令集。
- 指令集和彙編語言的關系?
- 指令集是可以直接被機器識别的機器碼,以二進制格式存在于計算機中。
- 彙編語言是可以被人識别的語言,在順序和邏輯上與機器指令一一對應。
- 也即是說,彙編語言是為了讓人記住機器指令的助記符。
- 指令集和CPU架構有關系?
- 彙編語言是對寄存器和段的直接操作的指令,而寄存器和段是架構的一部分,
- 是以不同的架構對應相應的指令集。由于操作系 統是管理計算機的真正入口,
- 如果作業系統不支援某種晶片的指令集,程式無法執行。cpu要适用于相應的指令集,比對作業系統。
- JVM和實體機的差別?
- 一個抽象的規範。官方的規範限制了JVM。
- 一個具體的實作。 不同的廠商根據這個抽象規範用軟體或者軟硬體結合的方式在相同或者不同的平台上的具體的實作。
- 一個運作的執行個體。 運作一個java程式時,它就是一個運作中的執行個體,每個運作中java程式就是一個jvm執行個體。
- jvm也有自己的指令集,稱為jvm位元組碼指令集。符合class檔案規範的位元組碼都可以被jvm執行。
- JVM體系結構
- 類加載器 :
- 在jvm啟動時或在類運作時将需要的class加載到JVM中。每個被JVM裝載的類型都有一個對應的java.lang.Class類的執行個體來表示該類型,該執行個體可以唯一表示被JVM裝載的class類,要求這個執行個體和其他類的執行個體一樣都存在java堆中。
- 執行引擎 :
- 執行引擎的任務是負責執行class檔案中包含的位元組碼指令,相當于實際機器上的cpu 。執行引擎是jvm的核心部分,執行引擎的作用就是解析jvm位元組碼指令,得到執行的結果。執行引擎具體采取什麼方式由jvm的實作廠家實作。有直接解釋執行、采用JIT技術轉成本地代碼執行、采用寄存器晶片模式執行等方法,sun的hotspot是基于棧的執行引擎。實質上執行引擎執行的是方法體内的代碼,是代碼的執行流程,對應的就是java中的線程,是以也可以說java線程是執行引擎的執行個體。
- 記憶體區:
- 将記憶體區劃分成不同的子產品。一個jvm執行個體會包括: 方法區、java堆、java棧、pc寄存器和本地方法區。
- 方法區和java堆是所有線程共享的,
- 本地方法調用:
- 類加載器 :