13 張圖解 Java 中的記憶體模型
阿新 • • 發佈:2020-10-17
前言
- 瞭解Java中的物件、變數等存放的記憶體區域十分重要
- 本文將全面講解Java虛擬機器中的記憶體模型 & 分割槽,希望你們會喜歡
目錄
1.記憶體模型 & 分割槽
Java虛擬機器在執行Java程式時,會管理著一塊記憶體區域:執行時資料區
在執行時資料區裡,會根據用途進行劃分:
- Java虛擬機器棧(棧區)
- 本地方法棧
- Java堆(堆區)
- 方法區
- 程式計數器
下面,我將詳細介紹每個記憶體模型分割槽
2.Java堆
簡介
3. Java虛擬機器棧
簡介
4. 本地方法棧
簡介:十分類似Java虛擬機器棧,與Java虛擬機器區別在於:服務物件,即Java虛擬機器棧為執行 Java 方法服務;本地方法棧為執行 Native方法服務
5.方法區
簡介
注:其內部包含一個執行時常量池,具體介紹如下:
6.程式計數器
簡介
7. 額外知識:直接記憶體
- 定義:NIO類(JDK1.4引入)中基於通道和緩衝區的I/O方式 通過使用Native函式庫 直接分配 的堆外記憶體
- 特點:不受堆大小限制
不屬於虛擬機器執行時資料區的一部分 & 不在堆中分配 - 應用場景:適用於頻繁呼叫的場景
通過一個 儲存在Java堆中的DirectByteBuffer物件 作為這塊記憶體的引用 進行操作,從而避免在 Java 堆和 Native堆之間來回複製資料,提高使用效能 - 丟擲的異常:OutOfMemoryError,即與其他記憶體區域的總和 大於 實體記憶體限制
8. 總結
本文全面講解JVM中的記憶體模型 & 分割槽,總結如下
作者:Carson_Ho
連結:juejin.im/post/6844903677279338509
歡迎關注我的微信公眾號「碼農突圍」,分享Python、Java、大資料、機器學習、人工智慧等技術,關注碼農技術提升•職場突圍•思維躍遷,20萬+碼農成長充電第一站,陪有夢想的你一起成長