天天看點

11張圖讓你吃透Java的記憶體模型!

1.記憶體模型 & 分區

Java虛拟機在運作Java程式時,在運作時資料區裡,會根據用途進行劃分:

11張圖讓你吃透Java的記憶體模型!
11張圖讓你吃透Java的記憶體模型!

下面詳細介紹每個記憶體模型分區

2.Java堆

11張圖讓你吃透Java的記憶體模型!
11張圖讓你吃透Java的記憶體模型!

3. Java虛拟機棧

11張圖讓你吃透Java的記憶體模型!
11張圖讓你吃透Java的記憶體模型!

4. 本地方法棧

11張圖讓你吃透Java的記憶體模型!

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

5.方法區

11張圖讓你吃透Java的記憶體模型!
11張圖讓你吃透Java的記憶體模型!

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

11張圖讓你吃透Java的記憶體模型!

6.程式計數器

11張圖讓你吃透Java的記憶體模型!
11張圖讓你吃透Java的記憶體模型!

7. 額外知識:直接記憶體

定義:NIO類中基于通道和緩沖區的I/O方式 ,是通過使用Native函數庫直接配置設定的堆外記憶體,不受大小限制,不是虛拟機運作時資料區的一部分,并且不在堆中配置設定,适用于多次調用的情況,可以避免在 Java 堆和 Native堆之間來回複制資料,提高抛出的異常的使用性能,其他記憶體區域的總和也大于實體記憶體限制。

繼續閱讀