「秒懂!」JVM虛擬機圖文詳解!一點都不難
作者:編程仔日常
了解Java中的對象、變量等存放的內存區域十分重要,本文將全面講解Java虛擬機中的內存模型 & 分區。
前言:
- 了解Java中的對象、變量等存放的內存區域十分重要
- 本文將全面講解Java虛擬機中的內存模型 & 分區,希望你們會喜歡目錄:

目錄:

1. 內存模型 & 分區
- Java虛擬機在運行Java程序時,會管理著一塊內存區域:運行時數據區
- 在運行時數據區里,會根據用途進行劃分:
- Java虛擬機棧(棧區)
- 本地方法棧
- Java堆(堆區)
- 方法區
- 程序計數器
下面,我將詳細介紹每個內存模型分區
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中的內存模型 & 分區,總結如下

責任編輯:武曉燕
來源:
今日頭條