重疊暫存器視窗計算多少個暫存器
今天繼續給大家分享JVM的相關知識,今天介紹一下JVM記憶體區域的程式計數器。
1、程式計數器概念
JVM中的程式計數暫存器(Program Counter Register)中Register的命名來源於CPU的暫存器,暫存器用來儲存指令相關的現場資訊。
CPU只有把資料裝載到暫存器中才能夠正常執行指令。
JVM中的暫存器不是物理上的暫存器而是對物理暫存器的抽象模擬。
程式計數器有時候也被稱為為程式鉤子
2、程式計數器的作用
程式計數器是JVM記憶體區域中一塊較小的記憶體空間,可以認為是當前Java執行緒所執行的位元組碼的行號指示器。位元組碼直譯器工作是透過改變這個計數器的值來定位選取下一條待執行的位元組碼指令,選擇、迴圈、異常處理、執行緒恢復等功能都需要依賴程式計數器來完成。
說明:JVM虛擬機器為了保證執行緒切換後還能恢復到上次正確執行的位置,JVM給每條Java執行緒都分配了一個獨立的程式計數器,這樣各執行緒之間計數器互不影響,獨立儲存和對應的Java執行緒生命週期保持一致。
位元組碼直譯器透過改變程式計數器來依次讀取指令,從而實現Java程式碼的流程控制,比如:順序執行、選擇、迴圈、異常處理等。
在多執行緒的情況下,程式計數器主要用於記錄當前執行緒執行的具體位置,這樣線上程切換回來的時候知道該執行緒從哪一個環節開始執行。
3、程式計數器的特點
每個Java執行緒獨有,與其對應的Java執行緒的生命週期保持一致。
佔用JVM記憶體區域很小的一塊(可忽略不計),讀取速度很快
負責準確記錄每個執行緒當前執行到的具體位置
執行本地方法,程式計數器會儲存undefined
JVM中唯一一個不會出現Out Of Memory Error(記憶體溢位錯誤)的區域,也不需要進行垃圾回收