Java調用棧(Call Stack)是一種用于記錄方法調用的數據結構,它遵循后進先出(LIFO)的原則。以下是Java調用棧的步驟:
當程序開始執行時,會在調用棧中創建一個主線程(main thread)的棧幀(Stack Frame),用于存儲主線程的局部變量和執行指令。
當程序調用一個方法時,會創建一個新的棧幀,并將其推入調用棧的頂部。這個新的棧幀包含了被調用方法的參數、局部變量和執行指令。
當方法執行完畢或遇到返回語句時,當前棧幀會被彈出調用棧,控制權返回給上一級方法。
被彈出的棧幀會被銷毀,之前的棧幀變為當前棧幀,繼續執行其中的指令。
當程序執行完畢或遇到異常時,主線程的棧幀會被彈出,調用棧為空,程序結束。
需要注意的是,Java調用棧的大小是有限制的,當調用棧中的棧幀數量超過了限制,會拋出棧溢出異常(StackOverflowError)。