簡單一篇,JVM體系結構

JVM

學習 Java 肯定會聽說過 JVM,從字面上看,JVM 指的是 Java Virtual Machine(Java虛擬機),在作者之前幾次面試經歷中,經常會被問到什麼是 JVM 和 JVM 調優的問題。也正是因爲有了 JVM 的存在,才使得 Java 語言擁有跨平臺的特性。

我認爲,JVM 不能用Java虛擬機潦草概括,JVM 是一種Java虛擬機規範,而衆多大廠家通過實現此規範研發出不同版本的 JVM。例如,sun公司的 HotSpot VM,BEA公司的JRockit,IBM公司的J9 JVM 等等。


下圖是 JVM 與操作系統和硬件體系結構圖,可以很清晰的看出,JVM 是運行在操作系統之上的,它與硬件沒有直接交互。


JVM 內存模型


JVM 的內存模型由以下幾大重要部分組成,其中的運行時數據區就是平時拋出RuntimeException的地方:

  1. 類加載器:將 Java 中 .class 的字節碼文件加載到 JVM 的內存區域中。
  2. 方法區:屬於線程共享區域,存儲已被類加載器加載的類信息、常量、靜態變量等數據。
  3. 堆:屬於線程共享區域,主要是存放對象實例和數組,所有被 new 出來的對象都存放在堆中。
  4. 虛擬機棧:屬於線程隔離區域,方法執行的內存模型,方法從調用直至執行結束,對應着一個棧幀從虛擬機棧中入棧到出棧的過程。
  5. 本地方法棧:屬於線程隔離區域,爲虛擬機使用到的 Native 方法服務。
  6. 程序計數器:屬於線程隔離區域,字節碼解釋器工作是就是通過改變這個計數器的值來選取下一條需要執行指令的字節碼指令,分支、循環、跳轉、異常處理、線程恢復等基礎功能都需要依賴計數器完成。
  7. GC(垃圾回收器):Java 垃圾自動回收的核心,會自動檢測並銷燬程序中超過生命週期的對象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章