1. 程式人生 > >java棧個人理解

java棧個人理解

java虛擬機器棧分為

(1)區域性變量表

方法引數和區域性變數的存放區域 相對於類變數的初始化和準備階段

必須顯示初始化

(2)操作棧 

是方法執行過程中各種指令棧中寫入和讀取資訊

(3)動態連結

每個棧幀包含一個常量池對當前方法的引用,目的支援在方法呼叫過程中動態連結

(4)方法返回地址

1.正常退出

return返回地址

2.異常退出

返回值壓入棧上層呼叫棧幀

異常資訊能夠處理的棧幀

PC計數器方法呼叫後下一條指令

本地方法棧

針對的是Native方法來說的執行緒呼叫本地方法時會進入不受jvm約束時刻

本地方法可以通過jni來訪問jvm執行時資料甚至通用暫存器

程式計數器

CPU只有把資料裝載到暫存器上才能夠執行,由於cpu的時間片機制,任何一個時刻不管是多核還是單核處理器每個核數上只能有一個指令執行,異常發生如何恢復呢,這時候就需要每個執行緒有自己的程式計數器和棧幀程式計數器用來放置指令行數和偏移量執行緒執行和恢復都需要這些資訊