Java仮想マシンはShangxue唐西安を実行しています

仮想マシンの各部分の面上の特定の例により、その動作手順を分析するために、より詳細に説明します。

リンクの他のタイプは、クラスを使用し、それらを初期化しながら、指定されたクラスに主要なパラメータに文字列の配列を渡し、指定されたクラスのメソッドを呼び出すことによって開始された仮想マシンのメインは、ロードします。たとえば、プログラム:

クラスHelloApp

{

公共の静的な無効メイン(文字列[] args)

{

System.out.println( "Hello Worldの!");

以下のために(int型私= 0;私<args.length、私は++)

{

System.out.println(引数[I])。

}

}

}

コマンドラインモードでコンパイルし、タイプします。java HelloAppは、仮想マシンを実行

HelloAppは、配列の3「実行」を含むメインの文字列、「仮想」、「機械」への転送、方法メインJava仮想マシンを呼び出すことによって開始されます。今、私たちはHelloAppがかかる場合があります仮想マシンの実装の手順の概要を説明します。

それはクラスが仮想マシンは、このようなバイナリ代表を見つけようとClassLoaderを使用するように仮想マシンが現在、クラスを代表してバイナリが含まれていないことを意味し、ロードされていないことが判明したクラスHelloAppのmainメソッドを実行しようとし始めました。このプロセスが失敗した場合は、例外がスローされます。一方、メインの前にそれが呼び出され、リンクがロードされた後、クラスHelloAppクラスの他のタイプで初期化する必要があります。検査、準備および解像度:リンクは、3つのフェーズで構成されています。メインロードの記号と意味を確認するためのテストのクラス、クラスまたは静的ドメインインタフェースを作成する準備ができて、そしてこれらのフィールドは、標準のデフォルト値に初期化され、解決はこの段階ことで、シンボル他のクラスやインターフェイスにメインクラスの参照をチェックするための責任がありますこれはオプションです。静的クラス初期化関数を初期化する方法の初期設定およびクラス内で宣言静的フィールドを行うことです。その親クラスの前にクラスの初期化は、初期化する必要があります。次のように全体のプロセスは次のとおりです。

Java仮想マシンはShangxue唐西安を実行しています

おすすめ

転載: blog.51cto.com/14512197/2439026