1. 程式人生 > 實用技巧 >JVM中,程式計數器和虛擬機器棧為什麼是執行緒私有的?

JVM中,程式計數器和虛擬機器棧為什麼是執行緒私有的?

小問題記錄:

為什麼程式計數器是執行緒私有的?

程式計數器:是jvm記憶體區域中一塊較小的記憶體區域,其中記錄的是當前執行緒執行到的位元組碼的行號,位元組碼直譯器工作時通過改變程式計數器的值來選取下一條需要執行的位元組碼指令。

線上程切換過程中,程式計數器記錄當前執行緒執行的位元組碼指令行號,再切換回該執行緒時,能保證正確執行。所以程式計數器是執行緒私有的。

注意:程式計數器是唯一一個不會出現OutOfMemoryError的記憶體區域,它的生命週期隨著執行緒的建立而建立,隨著執行緒的結束而死亡。

為什麼虛擬機器棧是執行緒私有的?

虛擬機器棧可用類比資料結構中棧,虛擬機器棧中儲存的主要內容是棧幀,每一次函式呼叫

都會有一個對應的棧幀被壓入虛擬機器棧,每一個函式呼叫結束後,都會有一個棧幀被彈出。

棧幀中儲存的是(區域性變量表、運算元棧、動態連結、方法出口資訊)

為了保證執行緒區域性變數不被其他的執行緒訪問,因此虛擬機器棧是執行緒私有的。