JVM:圖文解析 Java記憶體模型 & 分割槽

前言
Java Java
在接下來的日子,我會推出一系列講解 JVM
的文章,具體如下;感興趣可持續關注 ofollow,noindex">Carson_Ho的安卓開發筆記

示意圖
目錄

示意圖
1. 記憶體模型 & 分割槽
-
Java
虛擬機器在執行Java
程式時,會管理著一塊記憶體區域:執行時資料區 - 在執行時資料區裡,會根據用途進行劃分:
Java Java

示意圖
- 下面,我將詳細介紹每個記憶體模型分割槽
2. Java堆
-
示意圖
示意圖
-
簡介

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

示意圖
4. 本地方法棧
- 示意圖

示意圖
-
簡介
十分類似
Java
虛擬機器棧,與Java虛擬機器區別在於:服務物件,即Java虛擬機器棧為執行
Java
方法服務;本地方法棧為執行Native
方法服務
5. 方法區
-
示意圖
示意圖
-
簡介

示意圖
-
注
其內部包含一個執行時常量池,具體介紹如下:

示意圖
6. 程式計數器
- 示意圖

示意圖
- 簡介

示意圖
7. 額外知識:直接記憶體
不屬於虛擬機器執行時資料區的一部分 & 不在堆中分配
- 應用場景:適用於頻繁呼叫的場景
通過一個 儲存在 Java
堆中的 DirectByteBuffer
物件 作為這塊記憶體的引用 進行操作,從而避免在 Java
堆和 Native
堆之間來回複製資料,提高使用效能
- 丟擲的異常:
OutOfMemoryError
,即與其他記憶體區域的總和 大於 實體記憶體限制
8. 總結
- 本文全面講解JVM中的記憶體模型 & 分割槽,總結如下

示意圖
- 在接下來的日子,我會推出一系列講解
JVM
的文章,具體如下;感興趣可持續關注 Carson_Ho的安卓開發筆記

示意圖