JVM優化:PC 程序計數器
一、什么是程序計數器
程序計數器(Program Counter Register):也叫PC寄存器,是一塊較小的內存空間,它可以看做是當前線程所執行 的字節碼的行號指示器。在虛擬機的概念模型里,字節碼解釋器工作時就是通過改變這個計數器的值來選取下一條 需要執行的字節碼指令、分支、循環、跳轉、異常處理、線程恢復等基礎功能都需要依賴這個計數器來完成。
二、PC寄存器的特點
(1)區別于計算機硬件的pc寄存器,兩者不略有不同。計算機用pc寄存器來存放“偽指令”或地址,而相對于虛擬 機,pc寄存器它表現為一塊內存,虛擬機的pc寄存器的功能也是存放偽指令,更確切的說存放的是將要執行指令的 地址。
(2)當虛擬機正在執行的方法是一個本地(native)方法的時候,jvm的pc寄存器存儲的值是undefined。
(3)程序計數器是線程私有的,它的生命周期與線程相同,每個線程都有一個。
(4)此內存區域是唯一一個在Java虛擬機規范中沒有規定任何OutOfMemoryError情況的區域。

Java虛擬機的多線程是通過線程輪流切換并分配處理器執行時間的方式來實現的,在任何一個確定的時刻,一個處 理器只會執行一條線程中的指令。 因此,為了線程切換后能恢復到正確的執行位置,每條線程都需要有一個獨立的程序計數器,各條線程之間的計數 器互不影響,獨立存儲,我們稱這類內存區域為“線程私有”的內存。






















