java-方法記憶體分配

我是一個小太陽,渾身充滿正能量 發表於 2020-10-17

1.方法只是定義,不呼叫,不會執行,也不會分配執行所屬的記憶體空間,只有在呼叫方法是才會動態分配空間
2.在jvm記憶體劃分上有三個主要的記憶體空間:
-方法區記憶體
- 推記憶體
- 棧記憶體
3.關於棧資料結構

  • 棧:stack ,是一種資料結構
  • 資料結構反映的是儲存形態
  • 常見的資料結構:陣列,佇列,棧,連結串列,二叉樹,雜湊表/雜湊表……
    在這裡插入圖片描述
    4.方法執行程式碼片段在哪裡?方法執行的過程中記憶體在哪裡分配?
    • 方法程式碼片段屬於 .class 位元組碼檔案的一部分,位元組碼檔案在類載入的時候,將其放到方法區當中,所以jvm中的三塊記憶體空間 方法區最先有資料,存放了程式碼片段
    • 程式碼片段雖然在方法區中只有一份,但是可以重複呼叫。每一次呼叫這個方法時,需要給該方法分配獨立額活動場所,在棧記憶體中分配【棧記憶體中分配方法執行的所屬記憶體空間】
      5.方法在呼叫的時候,會給該方法分配的記憶體空間,發生壓棧動作,方法執行結束後,給該方法分配的記憶體空間全部釋放,此時發生彈棧動作。
      6.區域性變數在“方法體”中宣告,區域性變數執行階段記憶體在棧中分配。

在方法呼叫時,引數傳遞的時候,實際上傳遞的是變數的