1. 程式人生 > >Java基礎(二)Java記憶體區域

Java基礎(二)Java記憶體區域

Java記憶體區域包括5部分:程式計數器、Java棧、本地方法棧、Java堆、方法區。

1、程式計數器(執行緒私有)

存放當前執行緒執行的位元組碼的行號指示器。

2、Java棧(執行緒私有)

存放棧幀,棧幀中存放區域性變量表、運算元棧、動態連結、方法返回地址等。

其中,區域性變量表,存放方法引數和區域性變數。

運算元棧,主要用於存放中間變數。

動態連結,常量池中的符號引用,解析為直接引用有兩種方式,一種是類載入階段或第一次使用時解析,即靜態解析;一種是執行期間轉換,即動態連結。

方法返回地址,方法退出時需要在棧幀中儲存一些資訊,正常退出時是PC計數器的值,異常退出時不儲存。

3、本地方法棧(執行緒私有)

存放本地方法的棧幀。

4、Java堆

存放Java物件例項。

5、方法區

儲存被虛擬機器載入的類資訊、常量、靜態變數、即時編譯器編譯後的程式碼等,在JDK1.8後,方法區中的資料被移到元空間(MetaSpace)中,元空間位於本地記憶體,也就是不在虛擬機器中。