程序計數器簡要介紹

程序計數器是一塊較小的內存空間,它可以看做是當前線程所執行的字節碼的行號指示器,在虛擬機的概念模型裏,字節碼解析器工作時就是通過改變這個計數器的值來選取下一條需要執行的字節碼指令。分支,循環,跳轉,異常處理,線程恢復等基礎功能都需要依賴這個計數器來完成。
由於Java虛擬機的多線程是通過線程輪流切換並分配處理器執行時間的方式來實現的,在任何一個確定的時刻,一個處理器(對於多核處理器來說是一個內核)都只會執行一條線程中的指令,因此,爲了線程切換後能恢復到正確的執行位置, 每條線程都需要有一個獨立的程序計數器, 各條線程之間計數器互不影響。 獨立存儲, 我們稱這類內存區域爲”線程私有”的內存。
如果線程正在執行的是一個Java方法,這個計數器記錄的是正在執行的虛擬機字節碼指令的地址。如果正在執行的是Native方法,這幾計數器的值爲空,(undifined)。
此內存區域是唯一一個在Java虛擬機規範中沒有規定任何OutOfMemoryError情況的區域

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章