首頁 > 軟體

簡單解析java方法在呼叫在記憶體中的執行過程

2022-07-08 18:03:14

一.前提

1.棧的記憶體原理圖

2.JVM是怎麼執行方法的???

  • 1.在執行階段的時候,classLoader類載入器會把class檔案中方法對應的程式碼片段放入記憶體區中的方法區中,以便於下次呼叫方法時,還能使用該方法。
  • 2.JVM在執行過程中,會把方法裡面的程式碼塊按照方法呼叫的先後順序壓棧入記憶體中的棧空間,按照方法里語句的執行順序(從上到下,從裡到外)去進行彈棧與執行操作

二.呼叫(執行)過程

1.方法呼叫時的規則

方法首次呼叫時,會通過類載入器將方法的對應的程式碼塊載入到記憶體中方法區

每次呼叫方法時相當於一次壓棧過程,當方法裡面的語句全部執行完畢,就會把該方法進行彈棧操作(若不彈棧的話,到某個時候必會產生堆疊溢位異常)

2.範例程式碼

public class Practice {
    public static void main(String[] args) {
        System.out.println("main 開始");
        show1();
        System.out.println("main 結束");
    }
    public static void show1(){
        System.out.println("show1 開始");
        show2();
        System.out.println("show1 結束");
    }
    public static void show2(){
        System.out.println("show2 開始");
        System.out.println("show2 結束");
    }
}

3.整個程式的方法呼叫的過程圖

3.1 JVM會自動呼叫main方法,因此main方法首先壓棧,然後依次執行main方法裡面的語句

3.2 當遇到show1()方法時,會把show1()方法壓棧,並去執行show1方法裡面的語句

3.3 執行show1方法裡面的語句時,當執行到show2()時,show1方法暫停,然後對show2方法壓棧,然後執行show2方法的內容

3.4 當執行完show2方法裡面的內容時,會對show2方法進行彈棧,返回至show1方法中呼叫show2方法的位置,若沒有對返回值有賦值操作,就會去執行後面的語句

3.5 執行完show1方法後會對show1方法進行彈棧,返回show1方法呼叫處的位置,然後去執行show1方法呼叫處以及後面的語句

4.範例程式碼執行截圖

到此這篇關於簡單解析java方法在呼叫在記憶體中的執行過程 的文章就介紹到這了,更多相關java方法呼叫內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com