前言

  • 了解Java中的對(duì)象、變量等存放的內(nèi)存區(qū)域十分重要
  • 本文將全面講解Java虛擬機(jī)中的內(nèi)存模型 & 分區(qū),希望你們會(huì)喜歡

目錄

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_java虛擬機(jī)

1、內(nèi)存模型 & 分區(qū)Java虛擬機(jī)在運(yùn)行Java程序時(shí),會(huì)管理著一塊內(nèi)存區(qū)域:運(yùn)行時(shí)數(shù)據(jù)區(qū)在運(yùn)行時(shí)數(shù)據(jù)區(qū)里,會(huì)根據(jù)用途進(jìn)行劃分:

  1. Java虛擬機(jī)棧(棧區(qū))
  2. 本地方法棧
  3. Java堆(堆區(qū))
  4. 方法區(qū)
  5. 程序計(jì)數(shù)器

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_java虛擬機(jī)_02

下面,我將詳細(xì)介紹每個(gè)內(nèi)存模型分區(qū)

2、Java堆

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_內(nèi)存模型_03

簡(jiǎn)介

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_內(nèi)存模型_04

3、Java虛擬機(jī)棧

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_java虛擬機(jī)_05

簡(jiǎn)介

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_java_06

4、本地方法棧

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_java虛擬機(jī)_07

簡(jiǎn)介:十分類(lèi)似Java虛擬機(jī)棧,與Java虛擬機(jī)區(qū)別在于:服務(wù)對(duì)象,即Java虛擬機(jī)棧為執(zhí)行 Java 方法服務(wù);本地方法棧為執(zhí)行 Native方法服務(wù)

給大家推薦一份《JVM進(jìn)階學(xué)習(xí)筆記》,深入了解JVM參數(shù)、常用命令、內(nèi)存、GC、JVM性能優(yōu)化指南。以及其他常見(jiàn)問(wèn)題,??點(diǎn)擊此處即可免費(fèi)領(lǐng)取???。?!

5、方法區(qū)

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_java_08

簡(jiǎn)介

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_數(shù)據(jù)區(qū)_09

注:其內(nèi)部包含一個(gè)運(yùn)行時(shí)常量池,具體介紹如下:

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_java_10

6、程序計(jì)數(shù)器

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

簡(jiǎn)介

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_內(nèi)存模型_12

7、額外知識(shí):直接內(nèi)存

  • 定義:NIO類(lèi)(JDK1.4引入)中基于通道和緩沖區(qū)的I/O方式 通過(guò)使用Native函數(shù)庫(kù) 直接分配 的堆外內(nèi)存
  • 特點(diǎn):不受堆大小限制

不屬于虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)的一部分 & 不在堆中分配

  • 應(yīng)用場(chǎng)景:適用于頻繁調(diào)用的場(chǎng)景

通過(guò)一個(gè) 存儲(chǔ)在Java堆中的DirectByteBuffer對(duì)象 作為這塊內(nèi)存的引用 進(jìn)行操作,從而避免在 Java 堆和 Native堆之間來(lái)回復(fù)制數(shù)據(jù),提高使用性能

  • 拋出的異常:OutOfMemoryError,即與其他內(nèi)存區(qū)域的總和 大于 物理內(nèi)存限制

8、總結(jié)

本文全面講解JVM中的內(nèi)存模型 & 分區(qū),總結(jié)如下

13張圖解就能讓女朋友徹底了解Java中的內(nèi)存模型,快上車(chē)!_數(shù)據(jù)區(qū)_13