首頁  >  文章  >  Java  >  13 張圖解 Java 中的記憶體模型

13 張圖解 Java 中的記憶體模型

Java学习指南
Java学习指南轉載
2023-07-26 15:58:301419瀏覽
前言
  • 了解Java中的物件、變數等存放的記憶體區域十分重要
  • #本文將全面講解Java虛擬機器中的記憶體模型& 分區,希望你們會喜歡

目錄

13 張圖解 Java 中的記憶體模型

#1.記憶體模型& 分割區


Java虛擬機器在執行Java程式時,會管理著一塊記憶體區域:執行時間資料區

#在運行時資料區裡,會依照用途進行劃分:

#
  1. Java虛擬機器堆疊(堆疊區)
  2. 本機方法堆疊
  3. Java堆疊(堆疊區)
  4. 方法區
  5. 程式計數器

13 張圖解 Java 中的記憶體模型

下面,我將詳細介紹每個記憶體模型分割區


2. Java堆


13 張圖解 Java 中的記憶體模型
简介
13 張圖解 Java 中的記憶體模型


3. Java虚拟机栈


13 張圖解 Java 中的記憶體模型

简介
13 張圖解 Java 中的記憶體模型


4. 本地方法栈


13 張圖解 Java 中的記憶體模型  
#簡介:十分類似Java虛擬機棧,與Java虛擬機區別在於:服務對象,即Java虛擬機器堆疊為執行Java 方法服務;本機方法堆疊為執行Native方法服務

#

5. 方法区



13 張圖解 Java 中的記憶體模型
简介
13 張圖解 Java 中的記憶體模型
注:其内部包含一个运行时常量池,具体介绍如下:
13 張圖解 Java 中的記憶體模型

6. 程序计数器


13 張圖解 Java 中的記憶體模型
简介
13 張圖解 Java 中的記憶體模型  

7. 额外知识:直接内存


  • #定義:NIO類別(JDK1.4引入)中基於通道和緩衝區的I/O方式透過使用Native函數庫直接分配的堆外記憶體
  • 特點:不受堆大小限制
不屬於虛擬機器運行時數據區的一部分& 不在堆中分配
  • 應用場景:適用於頻繁呼叫的場景
透過一個儲存在Java堆中的DirectByteBuffer物件作為這塊記憶體的引用進行操作,從而避免在Java 堆和Native堆之間來回復制數據,提高使用效能
  • 拋出的例外:OutOfMemoryError,即與其他記憶體區域的總和大於物理記憶體限制


8. 總結


#
本文全面說明JVM中的記憶體模型 & 分區,總結如下


13 張圖解 Java 中的記憶體模型

以上是13 張圖解 Java 中的記憶體模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:Java学习指南。如有侵權,請聯絡admin@php.cn刪除