Java虛擬機器 (JVM) 棧區


以下是理解JVM棧區的一些關鍵點:

  • 在建立執行緒時,Java虛擬機器建立一個單獨的棧。

  • JVM僅對該棧執行兩個操作:壓棧(即插入)和彈棧(即刪除)。

  • 當執行緒當前正在執行時,與其關聯的棧稱為執行時棧。

  • 執行緒執行的每個方法呼叫、中間計算、區域性變數賦值、呼叫引數等都作為操作儲存在執行時棧中。

  • 一旦執行緒停止或完成執行,棧中相應的部分就會被刪除。

  • 一旦執行緒的所有呼叫都完成,棧就會變為空,並被刪除。

  • 在終止執行緒之前,JVM會銷燬與該執行緒關聯的棧。

  • 儲存與執行緒關聯資料的棧只對該特定執行緒可用,其他執行緒無法訪問。

  • 這表明棧中的資料是執行緒安全的。

  • 與執行緒關聯的棧中的每個資料都稱為啟用記錄或棧幀。

注意 - JVM棧不必具有連續的記憶體位置。

啟用記錄/棧幀的結構

它包含三個組成部分:

  • 區域性變數陣列、

  • 運算元棧和

  • 幀資料

  • JVM透過檢查類資料來建立所需大小的棧幀。

  • 運算元棧充當JVM的工作區——它用於儲存中間計算結果。它的結構類似於區域性變數陣列,但可以透過對棧執行壓棧和彈棧操作來訪問。

  • 幀資料 - 它包含常量資料值和方法返回的資料。此外,它還包含對異常表的引用,該表包含關於捕獲異常時需要捕獲的catch塊以及需要在控制檯上顯示的相關訊息的所有資訊。

更新於:2020年7月7日

809 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告