JVM 虛擬機基礎

  • 1. 內存模型 & 分區

  • 2. Java 堆

  • 3. Java 虛擬機棧

  • 4. 本地方法棧

  • 5. 方法區

  • 6. 程序計數器

  • 7. 額外知識:直接內存


前言:

  • 瞭解Java中的對象、變量等存放的內存區域十分重要

  • 本文將全面講解Java虛擬機中的內存模型 & 分區,希望你們會喜歡

目錄:

1. 內存模型 & 分區

  • Java虛擬機在運行Java程序時,會管理着一塊內存區域:

    運行時數據區

  • 在運行時數據區裏,會根據用途進行劃分:

  •  

    1. Java虛擬機棧(棧區)

    2. 本地方法棧

    3. Java堆(堆區)

    4. 方法區

    5. 程序計數器

  • 下面,我將詳細介紹每個內存模型分區

2. Java 堆

  • 示意圖

  • 簡介

3. Java 虛擬機棧

  • 示意圖

  • 簡介

4. 本地方法棧

  • 示意圖

  • 簡介

    十分類似Java虛擬機棧,與Java虛擬機區別在於:服務對象,即Java虛擬機棧爲執行  Java方法服務;本地方法棧爲執行  Native方法服務

5. 方法區

  • 示意圖

  • 簡介

其內部包含一個運行時常量池,具體介紹如下:

6. 程序計數器

  • 示意圖

  • 簡介

7. 額外知識:直接內存

  • 定義:NIO類(JDK1.4引入)中基於通道和緩衝區的I/O方式 通過使用Native函數庫 直接分配 的堆外內存

  • 特點:不受堆大小限制

  • 應用場景:適用於頻繁調用的場景

通過一個 存儲在Java堆中的DirectByteBuffer對象 作爲這塊內存的引用 進行操作,從而避免在Java 堆和 Native堆之間來回複製數據,提高使用性能

  • 拋出的異常:OutOfMemoryError,即與其他內存區域的總和 大於 物理內存限制


  • 本文全面講解JVM中的內存模型 & 分區,總結如下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章