
前言
- 了解
Java中的對象、變量等存放的內(nèi)存區(qū)域十分重要 - 本文將全面講解
Java虛擬機中的內(nèi)存模型 & 分區(qū),希望你們會喜歡
Carson帶你學JVM系列文章,具體如下:
Carson帶你學JVM:這是一份全面 & 詳細的JVM學習指南
Carson帶你學JVM:圖文解析Java虛擬機內(nèi)存結(jié)構(gòu)
Carson帶你學JVM:Java對象的創(chuàng)建、內(nèi)存布局 & 訪問定位全過程解析
Carson帶你學JVM:Java對象如何判斷存活原則-引用計數(shù)法 & 引用鏈法
Carson帶你學JVM:這是一份全面 & 詳細的垃圾收集算法(GC)講解攻略
Carson帶你學JVM:常見的垃圾收集器學習指南
Carson帶你學JVM:類加載的全過程解析
Carson帶你學JVM:你真的了解類加載器嗎?(含雙親委派模型)
Carson帶你學JVM:方法分派模型-靜態(tài)分派、動態(tài)分派
目錄

1. 內(nèi)存模型 & 分區(qū)
-
Java虛擬機在運行Java程序時,會管理著一塊內(nèi)存區(qū)域:運行時數(shù)據(jù)區(qū) - 在運行時數(shù)據(jù)區(qū)里,會根據(jù)用途進行劃分:
-
Java虛擬機棧(棧區(qū)) - 本地方法棧
-
Java堆(堆區(qū)) - 方法區(qū)
- 程序計數(shù)器
-

- 下面,我將詳細介紹每個內(nèi)存模型分區(qū)
2. Java堆
-
示意圖
示意圖 簡介

關于垃圾回收的講解會在接下來推出的文章里講解
3. Java虛擬機棧
-
示意圖
示意圖 簡介

4. 本地方法棧
- 示意圖

- 簡介
十分類似Java虛擬機棧,與Java虛擬機區(qū)別在于:服務對象,即
Java虛擬機棧為執(zhí)行Java方法服務;本地方法棧為執(zhí)行Native方法服務
5. 方法區(qū)
-
示意圖
示意圖 簡介

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

6. 程序計數(shù)器
- 示意圖

- 簡介

7. 額外知識:直接內(nèi)存
- 定義:
NIO類(JDK1.4引入)中基于通道和緩沖區(qū)的I/O方式 通過使用Native函數(shù)庫 直接分配 的堆外內(nèi)存 - 特點:不受堆大小限制
不屬于虛擬機運行時數(shù)據(jù)區(qū)的一部分 & 不在堆中分配
- 應用場景:適用于頻繁調(diào)用的場景
通過一個 存儲在
Java堆中的DirectByteBuffer對象 作為這塊內(nèi)存的引用 進行操作,從而避免在Java堆和Native堆之間來回復制數(shù)據(jù),提高使用性能
- 拋出的異常:
OutOfMemoryError,即與其他內(nèi)存區(qū)域的總和 大于 物理內(nèi)存限制
8. 總結(jié)
- 本文全面講解JVM中的內(nèi)存模型 & 分區(qū),總結(jié)如下

- 接下來我會對Java虛擬機(JVM)進行詳細的分析,歡迎關注Carson_Ho的簡書,不定期分享關于安卓開發(fā)的干貨,追求短、平、快,但卻不缺深度。

請點贊!因為你的鼓勵是我寫作的最大動力!
Carson帶你學JVM系列文章,具體如下:
Carson帶你學JVM:這是一份全面 & 詳細的JVM學習指南
Carson帶你學JVM:圖文解析Java虛擬機內(nèi)存結(jié)構(gòu)
Carson帶你學JVM:Java對象的創(chuàng)建、內(nèi)存布局 & 訪問定位全過程解析
Carson帶你學JVM:Java對象如何判斷存活原則-引用計數(shù)法 & 引用鏈法
Carson帶你學JVM:這是一份全面 & 詳細的垃圾收集算法(GC)講解攻略
Carson帶你學JVM:常見的垃圾收集器學習指南
Carson帶你學JVM:類加載的全過程解析
Carson帶你學JVM:你真的了解類加載器嗎?(含雙親委派模型)
Carson帶你學JVM:方法分派模型-靜態(tài)分派、動態(tài)分派


