天天看點

java虛拟機

最近學習java虛拟機做了一些整理,會陸續發完。

                         Java虛拟機

一、概念:當我們談到java虛拟機的時候,有可能指下面3個方面:

1):抽象java虛拟機的規範。

2):一個java虛拟機具體的實作。------實作是指:實作需要有接口,用類實作接口,并實作接口所有方法。就是說先有一個接口,然後寫一個類實作接口中的所定義的方法。

3):一個運作中的java虛拟機執行個體。

而我們經常說的大多數是第三種。也就是一個正在運作的java虛拟機執行個體。

java虛拟機之是以被稱為“虛拟”的,就是因為它僅僅是有一個規範定義的抽象計算機。是以,運作某個java程式,首先需要一個符合該規範的具體實作。

當運作一個java程式的同時,也就在運作一個java虛拟機執行個體。每個java程式都運作于某個具體的java虛拟機實作的執行個體上。它是java編譯器和os平台之間的虛拟處理器。負責與作業系統之間的互動

二、java虛拟機生命周期:

Java虛拟機的産生和消亡是伴随java程式的運作和停止。也就是說當java程式運作的時候,相應的java虛拟機也就誕生了,反正消亡。其具體的實作是通過調用内部main方法來實作。

java虛拟機

三:jvm執行java程式的順序是什麼呢?

大緻如下:

Java(源代碼)——>class(位元組碼)——>類加載器——>位元組碼校驗器——>硬體

具體過程: 1、加載class檔案

                  2、管理配置設定記憶體

                  3、執行垃圾回收

四、Java虛拟機的體系結構:

java虛拟機

組成部分:一系列的子系統、記憶體區域、資料類型和使用指南。這些構成java虛拟機的内部結構。這些組成結構實作了外部行為(java虛拟機與OS之間的實作)和實作内部行為(java虛拟機的内部之間的實作)。

類加載器子系統(class loader  subsystem)作用:每個java虛拟機都由類加載器子系統(class  loader subsystem)。負責加載程式中類型(類和接口)。

執行引擎(execution  engine):負責執行被加載類中的包含的指令。每個java虛拟機都有一個執行引擎(execution engine)。

記憶體區域:程式的執行需要一定的記憶體空間。如位元組碼、被加載的其他額外資訊、程式中的對象、方法參數、傳回值、本地變量、進行中間變量等等。Java虛拟機将這些的資訊統統儲存在資料區中(data areas)。雖然每個java虛拟機的實作中都包含資料區,但是java虛拟機規範對資料區的規定卻非常的抽象。許多結構上的細節部分都留給了java虛拟機實作者的發揮。不同 的java虛拟機實作上的記憶體結構千差萬别。一部分實作可能占用很多記憶體,而其他一下可能隻占用很少的記憶體。一些實作可能會使用虛拟記憶體。

Data  areas :資料區中的一部分是整個程式的共有的,有其他部分被單獨的線程控制。每個虛拟機都包含方法去(method area)和堆(heap),他們被整個程式的共享的。

java虛拟機

方法區(method area):當java虛拟機加載并解析一個類後,将從類檔案中解析出來資訊儲存在方法區中(method area)。

堆(heap):程式執行時的建立的對象儲存在堆中。

java虛拟機

其他的記憶體區域:

PC寄存器概念:又叫指令計數器。中央處理機中的一種寄存器,用來儲存計算機的執行程式的指令位址。

作用:儲存線程執行的下一條指令。這其中包括是否調用本地方法情況:

當不調用本地方法的時候:PC寄存器儲存線程執行下一條指令。

當線程調用本地方法的時候,pc寄存器不儲存線程的下一條執行指令。

Javastacks(java 堆棧)作用:儲存一個線程的調用方法的狀态,包括本地變量、調用方法的參數、傳回值、處理的中間變量。調用本地方法的時的狀态儲存在本地方法堆棧中(native method stacks),也可能在寄存器中。

Javastacks 是由java堆棧塊組成。而堆棧塊包含java方法調用的狀态。

java虛拟機

Java虛拟機不使用寄存器儲存中間結果,而是用java堆棧中存放中間結果。

好處:使java虛拟機的指令更緊湊,也更容易在一個沒寄存器的裝置上實作java虛拟機。

java虛拟機

資料類型(data types):每個java虛拟機中使用的資料都有确定的資料類型。

資料類型和操作都在java虛拟機規範中嚴格定義的。其中資料類型包括原始資料類型和引用資料類型。

引用類型依賴于實際對象,但不是對象本身。

原始資料類型不依賴任何東西,他們就是本身表示的資料。

上一篇: java虛拟機
下一篇: Java虛拟機

繼續閱讀