1. 程式人生 > >java虛擬機--->>程序計數器

java虛擬機--->>程序計數器

計數 程序 異常 改變 基礎 java 我們 時間 情況

  程序計數器是一塊較小的內存空間,他可以看做是當前線程所執行的行號指示器。在虛擬機的概念模型(僅是概念模型,各種虛擬機可能會通過一些更高效率的方式去實現)裏,字節碼解釋器工作室就是通過改變這個計數器的值來選取下一條需要執行的字節碼指令,分支,循環,跳轉,異常處理,線程恢復等基礎功能都需要依賴這個計數器來完成。

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

  如果線程正在執行的是一個java方法,這個計數器記錄的是正在執行的虛擬機字節碼指令的地址,如果正在執行的是native方法,那麽這個計數器值則為空,次內存區域是唯一一個在java虛擬機規範中沒有規定OutOfMemoryError情況的區域!

java虛擬機--->>程序計數器