1. 程式人生 > >JVM:JVM的記憶體結構

JVM:JVM的記憶體結構

前言

今天開始JVM的學習,從JIVM的記憶體結構開始JVM之旅。

記憶體結構圖

在這裡插入圖片描述

程式計數器:

容量:較小的記憶體空間
作用:當前執行緒所執行的行號指示器
說明:JAVA方法,則程式計數器的記錄就是當前虛擬機器位元組碼指令的地址。本地方法,則為空。
共享還是私有:執行緒私有,執行緒間互不影響

JAVA虛擬機器棧:

作用:
每個方法在執行時會建立一個棧幀,一個方法的執行就是這個棧幀在虛擬機器棧入棧出棧的過程。

說明:棧幀用於儲存區域性變量表、運算元棧、方法出口、動態連結

共享還是私有:執行緒私有

本地方法棧:

作用:
執行本地方法 native方法

共享還是私有:執行緒私有

容量:jvm中容量最大的區域
作用:用於存放例項化物件和陣列,GC的主要區域
共享還是私有:共享
說明:堆可以是空間上不連續但是邏輯上連續的區域。

方法區

作用:儲存已被虛擬機器載入的類資訊、常量、靜態變數
共享還是私有:共享
說明:常被稱為非堆,在GC分代機制中被劃入永久代

執行時常量池

作用:儲存編譯器字面值常量、符號引用,也可以在執行期放資料到常量池,常用於String的intern
共享還是私有:共享
說明:認為是方法區的一部分。在JDK8開始,這一塊區域放在元空間。

直接記憶體

作用:常用於NIO操作,NIO後面在學習
說明:直接記憶體不屬於JAVA虛擬機器的記憶體結構,不屬於JVM管控,稱之為堆外記憶體。