前言

  • 了解Java中的對象、變量等存放的內存區域十分重要
  • 本文將全面講解Java虛擬機中的內存模型 & 分區,希望你們會喜歡

目錄

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_java虛擬機

1、內存模型 & 分區Java虛擬機在運行Java程序時,會管理著一塊內存區域:運行時數據區在運行時數據區里,會根據用途進行劃分:

  1. Java虛擬機棧(棧區)
  2. 本地方法棧
  3. Java堆(堆區)
  4. 方法區
  5. 程序計數器

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_java虛擬機_02

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

2、Java堆

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_內存模型_03

簡介

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_內存模型_04

3、Java虛擬機棧

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_java虛擬機_05

簡介

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_java_06

4、本地方法棧

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_java虛擬機_07

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

給大家推薦一份《JVM進階學習筆記》,深入了解JVM參數、常用命令、內存、GC、JVM性能優化指南。以及其他常見問題,??點擊此處即可免費領取??!!!

5、方法區

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_java_08

簡介

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_數據區_09

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

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_java_10

6、程序計數器

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_本地方法_11

簡介

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_內存模型_12

7、額外知識:直接內存

  • 定義:NIO類(JDK1.4引入)中基于通道和緩沖區的I/O方式 通過使用Native函數庫 直接分配 的堆外內存
  • 特點:不受堆大小限制

不屬于虛擬機運行時數據區的一部分 & 不在堆中分配

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

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

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

8、總結

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

13張圖解就能讓女朋友徹底了解Java中的內存模型,快上車!_數據區_13