先來看這張圖,對於數據區,存在着線程,進程的概念。程序計數器是每個線程私有的。如果沒有多線程的概念,可以直接無視。
程序計數器
程序計數器,也有人叫它 程序寄存器。但是叫做 程序計數器更為精確。
因為我們知道,在計算機也有一種結構叫做 寄存器,它儲存容量小,但是速度快,一般用於 CPU 中。
但是我們這里的 程序計數器 只是我們常說的內存中划分出的一塊小內存區域,用來充當 程序計數器的功能。
它記錄了,我們下一條要運行指令的地址。
我們來看這張圖。
右邊是我們從 Java 文件編譯出的 class 文件的代碼內容,左邊是指令偏移地址,右邊是要執行的指令。
我們的 程序計數器就保存了 下一條指令要執行地址的位置。
之后,執行引擎會從 程序計數器中,獲得指令的地址,拿到操作指令,對其進行執行。
程序計數器 是 當前線程所執行的字節碼的行號指示器。
因為只是記錄下一條要運行指令的地址,所以占用內存小,而且操作簡單,相應的速度也就相對較快。