#1.在運行階段的時候,classLoader類別載入器會把class檔案中方法對應的程式碼片段放入記憶體區中的方法區中,以便於下次呼叫方法時,還能使用該方法。
2.JVM在運作過程中,會把方法裡面的程式碼區塊按照方法呼叫的先後順序壓棧入記憶體中的堆疊空間,按照方法裡語句的執行順序(從上到下,從裡到外)去進行彈棧與運行操作
方法第一次呼叫時,會透過類別載入器將方法的對應的程式碼區塊載入到記憶體中方法區
每次呼叫方法時相當於一次壓棧過程,當方法裡面的語句全部執行完畢,就會把該方法進行彈棧操作(若不彈棧的話,到某個時候必會產生堆棧溢出異常)
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.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方法呼叫在記憶體中的執行過程是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!