1. Java プログラムをコンパイルして MainApp.class ファイルを取得した後、コマンド ラインに java AppMain と入力します。システムは jvm プロセスを開始します。 jvmプロセスはクラスパスパスからiPhoneというバイナリファイルを見つけ、iPhoneのカテゴリ情報をランタイムデータ領域のメソッド領域にロードします。このプロセスは Apple 電話のロードと呼ばれます。
2. JVM は AppMain の main 関数エントリを見つけて、main 関数の実行を開始します。
main 関数の最初のコマンドは、JVM に Animal オブジェクトを作成させるための Animalanimal=newAnimal("Puppy") です。ただし、この時点ではメソッド領域に Animal クラスの情報はありません。JVM はすぐにAnimal クラスを読み込み、Animal クラスの型を変更し、メソッド領域に情報を配置します。
3. Animal クラスをロードした後、Java 仮想マシンはまず蓄積領域に新しい Animal インスタンス メモリを割り当て、構造体関数を呼び出して Animal インスタンスを初期化します。Animal インスタンスは、Animal インスタンスを指す Animal タイプ情報を持っています。メソッド領域 (メソッド テーブル、Java 動的バインディングの基本実装を含む)
4.animal.printName() を使用すると、JVM は動物参照に基づいて動物オブジェクトを検索し、動物のメソッド テーブルを見つけます。動物オブジェクトが保持する参照に基づいてメソッド領域の情報を型化し、printName() 関数のバイトコードのアドレスを取得します。
5. printName() 関数の実行を開始します。
拡張:
実行命令
コンパイルされたバイトコードのファイル形式は、主に定数プールとメソッドバイトコードの 2 つのタイプに分けられます。一部。コンスタントプールは、コード内に出現するメソッドの動作コード(クラス名、メンバ変数名など)とシンボル参照(メソッド参照、メンバ変数参照など)を記録し、各種メソッドの動作コードに配置します。カテゴリ内にあります。
以上がJavaプログラムをコンパイル後に実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。