小問題記錄:
為什么程序計數器是線程私有的?
程序計數器:是jvm內存區域中一塊較小的內存區域,其中記錄的是當前線程執行到的字節碼的行號,字節碼解釋器工作時通過改變程序計數器的值來選取下一條需要執行的字節碼指令。
在線程切換過程中,程序計數器記錄當前線程執行的字節碼指令行號,再切換回該線程時,能保證正確運行。所以程序計數器是線程私有的。
注意:程序計數器是唯一一個不會出現 OutOfMemoryError
的內存區域,它的生命周期隨着線程的創建而創建,隨着線程的結束而死亡。
為什么虛擬機棧是線程私有的?
虛擬機棧可用類比數據結構中棧,虛擬機棧中保存的主要內容是棧幀,每一次函數調用都會有一個對應的棧幀被壓入虛擬機棧,每一個函數調用結束后,都會有一個棧幀被彈出。
棧幀中保存的是(局部變量表、操作數棧、動態鏈接、方法出口信息)
為了保證線程局部變量不被其他的線程訪問,因此虛擬機棧是線程私有的。