標籤:
java虛擬機器解構圖一
java虛擬機器解構圖二
java虛擬機器結構圖三
【1】類載入系統
--->負責從檔案系統或網路中載入class資訊,存放至方法區的記憶體空間
【2】java堆
--->虛擬機器啟動時建立。java主要記憶體工作區域。
--->存放:java對象執行個體。
--->所有線程共用
【3】方法區
--->存放:class資訊,運行時常量池資訊,字串字面量,數字常量(class檔案中常量池部分的記憶體映射)
【4】直接記憶體
--->java的NIO庫允許java程式使用直接記憶體。
--->在java堆外的,直接向系統申請的記憶體空間。
--->訪問直接記憶體的速度優於java堆。出於效能考慮,讀寫頻繁的場合可能會考慮使用直接記憶體。由於直接記憶體在堆外,因此它的大小不會直接受限於Xmx指定的最大堆大小,但是系統記憶體是有限的。java堆和直接記憶體的總和依然受限於作業系統給出的最大記憶體
【5】記憶體回收系統
--->java虛擬機器重要組成部分。
--->對方法區,java堆,直接記憶體進行回收垃圾空間。
【6】java棧
--->每一個java虛擬機器線程都有一個私人的java棧。
--->一個線程的java棧線上程建立的時候被建立。
--->java棧中儲存著幀資訊(局部變數,方法參數)和方法調用和返回密切相關
【7】本地方法棧
--->和java棧非常相似。
--->不同在於java棧用於java的方法調用。本地方法棧用於本地方法的調用。
【8】PC寄存器
--->也是每一個線程私人的空間。java虛擬機器為每一個java線程建立pc寄存器。
--->一個java線程總是在執行一個方法,這個正在被執行的方法稱為當前方法。如果當前方法不是本地方法,pc寄存器就會執行當前正在被執行的指令。如果當前方法是本地方法,那麼pc寄存器的值就是undefined
【9】執行引擎
--->java虛擬機器的最核心組件之一,他負責執行虛擬機器的位元組碼。
(1)java虛擬機器概念和結構圖