深入解析java虛擬機器_java

來源:互聯網
上載者:User

java虛擬機器是什麼

“java虛擬機器”可能指以下三種東西:
1)、抽象規範;
2)、一個具體的實現;
3)、一個運行中的虛擬機器執行個體;

java虛擬機器生命週期

啟動
當啟動一個java程式時,一個虛擬機器執行個體誕生。
虛擬機器執行個體通過調用某個初始類的public static void main(String[] args)方法來運行一個java程式。
任何擁有這樣一個main方法的類都可以作為java程式啟動並執行起點,所以必須要告訴虛擬機器初始類的名稱,整個程式將從它的main方法開始運行。

消亡
初始類的main方法作為程式初始線程的起點,任何其他線程都是由初始線程啟動。
java虛擬機器內部有兩種線程:守護線程和非守護線程。
守護線程,通常是虛擬機器使用的線程,如執行垃圾收集。java程式也可以把建立的線程標記為守護線程。
非守護線程,java中的初始線程,就是開始於main方法的線程是非守護線程。
只要程式中有非守護線程在運行,那麼java程式也在繼續運行(虛擬機器仍然存活),當程式中所有的非守護線程都終止時,虛擬機器執行個體自動結束。
程式本身也可以通過Runtime類或System類的exit()方法退出。

java虛擬機器體繫結構

類裝載子系統
1)、負責尋找並裝載類型,分成裝載、串連和初始化,在java類型生命週期中有詳細說明;
2)、有兩種類裝載器:啟動類裝載器和使用者自訂類裝載器;
使用者自訂類裝載器必須派生自java.lang.ClassLoader類。

運行時資料區

方法區
被裝載類型的資訊儲存在方法區中,詳細如下:
基本資料
1)、類型的全限定名;
2)、類型的直接超類的全限定名;
3)、類型是類類型還是介面類型;
4)、類型的存取修飾詞;
5)、直接超介面的全限定名;

其他資訊
1)、類型的常量池;
2)、欄位資訊;
3)、方法資訊;
4)、除了常量以為的所有靜態變數;
5)、一個到ClassLoader類的引用;
6)、一個到Class類的引用;


1)、運行時建立的所有類執行個體和數組都放在堆中;
2)、一個java虛擬機器執行個體只存在一個堆空間,因此虛擬機器中的所有線程都共用這個堆;
3)、一個java程式獨佔一個java虛擬機器執行個體,因此每個java程式都有他自己的堆空間;

java棧

1)、每啟動一個新線程時,java虛擬機器都會為他分配一個java棧;
2)、java棧以幀為單位儲存線程的運行狀態;
3)、java虛擬機器對java棧只執行兩種操作:壓棧和出棧;
4)、壓棧:每當線程調用一個java方法時,虛擬機器都會在該線程的java棧中壓入一個新幀。使用這個幀來儲存參數、局部變數、中間運算結果等;
5)、出棧:當java方法通過return正常返回,或通過拋出異常中止,虛擬機器都會將當前幀彈出java棧然後釋放掉;
6)、棧資料是線程私人的,所以不需要考慮多線程情況下棧資料的訪問同步問題;

棧幀
1)、棧幀由三部分組成:局部變數區、運算元區和棧資料區;

PC寄存器
1)、對於運行中的java程式,每個線程都有自己的pc寄存器;
2)、線程啟動時建立;
3)、當線程執行某個java方法時,PC寄存器的內容總是下一條將被執行指令的地址。

本地方法棧
1)、任何本地方法介面都會使用本地方法棧;

執行引擎
1)、執行引擎是java虛擬機器實現的核心;
2)、“執行引擎”可以有三種理解:
  a)、一個是抽象的規範;
      b)、一個是具體的實現;
      c)、一個是正在啟動並執行執行個體;
3)、執行引擎的行為使用指令集來定義。對於每條指令,規範都規定了執行該指令時應該處理什麼,如果處理不做規定;
待細化。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.