1. 実行フェーズ中、classLoader クラス ローダーは、クラス ファイル内のメソッドに対応するコード フラグメントをメモリ領域のメソッド領域に配置し、次回メソッドが実行されたときに使用できるようにします。と呼ばれるこのメソッド。
2. プロセスの実行中、JVM は メソッド呼び出しの順序に従って、メソッド内のコード ブロックをメモリ内のスタック領域にプッシュします。スタックのポップと実行操作を実行するステートメントの順序 (上から下、内側から外側)
初めて呼び出すときは、メソッドの対応するコード ブロックがクラス ローダーを通じてメモリ メソッド領域にロードされます。メソッドが呼び出される これは、
スタック プッシュ プロセスと同等です。メソッド内のすべてのステートメントが実行されると、メソッドはスタックからポップされます (スタックがポップされない場合、 スタックはオーバーフロー例外)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.2 show1() メソッドに遭遇すると、show1( ) メソッドがスタックにプッシュされ、show1 メソッド内のステートメントが実行されます。 show1 メソッド内のステートメントで、show2() が実行されると、show1 メソッドは一時停止し、show2 メソッドをスタックにプッシュしてから、show2 メソッドの内容を実行します。
3.4 show2 メソッドの内容が実行されると、show2 メソッドはスタックからポップされ、show1 メソッドで show2 メソッドが呼び出された場所に戻ります。戻り値を受け取ると、次のステートメントが実行されます。
3.5 show1 メソッドの実行後、show1 メソッドがスタックからポップされ、次のステートメントに戻ります。 show1 メソッドが呼び出される場所を指定し、show1 メソッド呼び出しと後続のステートメントを実行します
4. スクリーンショットを実行するサンプル コード
以上がメモリ内での Java メソッド呼び出しの実行プロセスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。