1. 程式人生 > 實用技巧 >JVM記憶體結構---程式計數器,Java棧,堆,方法去,本地方法棧

JVM記憶體結構---程式計數器,Java棧,堆,方法去,本地方法棧

程式計數器也叫PC暫存器,用於儲存當前正常執行的程式的記憶體地址。 當A執行緒被中斷時, 程式計數器會記錄A執行緒被中斷的記憶體地址。這樣當A現場恢復執行時,就能從之前中斷的指令地址,繼續執行。

Java棧(JAVA虛擬機器棧),它是和執行緒關聯在一起的。 每當建立一個執行緒,JVM就會為這個執行緒建立一個對應的Java棧。 一個Java棧會包含有多個棧幀(Frames),這些棧幀是與java方法關聯的,每執行一個java方法,就建立一個棧幀。 棧幀中會含有一些內部變數,操作棧和方法返回值等資訊。

注意:由於Java棧是與Java執行緒對應起來的,所以Java棧中的資料執行緒獨立的,所以我們不用關心同步的問題。 這就是為什麼說,區域性變數不存線上程不安全的問題的原因。

堆,用於儲存Java物件,儲存在堆中的物件,會複製所有非靜態屬性。堆是被所有Java執行緒所共享的,存在同步問題。

方法區,用於儲存類結構資訊。 常量池,域,方法資料,方法體,建構函式,包括類中的專用方法,例項初始化,介面初始化都儲存在這個區域。 方法區是屬於Java堆中的永久區。

本地方法棧,是為JVM執行Native方法準備的空間。


參考書籍: 《深入分析Java Web技術內幕》

轉載於:https://blog.51cto.com/goodfuture/1861776