Java-virtual-machine-class-loader

提供:Dev Guides
移動先:案内検索

Java仮想マシン-クラスローダー

JVMは、クラスとインターフェースのロード、リンク、および初期化のプロセスを動的に管理します。 ロードプロセス中に、* JVMはクラスのバイナリ表現を見つけて作成します。*

リンクプロセス中に、読み込まれたクラスはJVMの実行時状態に結合され、初期化フェーズ中に実行できるようになります。 JVMは基本的に、リンクプロセスの実行時定数プールに格納されているシンボルテーブルを使用します。 初期化は、実際には*リンクされたクラスの実行*で構成されます。

ローダーの種類

*BootStrap* クラスローダーは、クラスローダー階層の最上位にあります。 JREの_lib_ディレクトリに標準のJDKクラスをロードします。
*Extension* クラスローダーはクラスローダー階層の中央にあり、ブートストラップクラスローダーの直接の子であり、JREのlib \ extディレクトリにクラスをロードします。

アプリケーション*クラスローダーは、クラスローダー階層の最下部にあり、アプリケーションクラスローダーの直接の子です。 *CLASSPATH ENV 変数で指定されたjarおよびクラスをロードします。

リンク

リンクプロセスは、次の3つのステップで構成されています-

検証-これは、生成された.classファイル(バイトコード)が有効であることを確認するために、バイトコード検証によって行われます。 そうでない場合、エラーがスローされ、リンクプロセスが停止します。

準備-メモリはクラスのすべての静的変数に割り当てられ、デフォルト値で初期化されます。

解像度-すべてのシンボリックメモリ参照が元の参照に置き換えられます。 これを達成するために、クラスのメソッド領域のランタイム定数メモリ内のシンボルテーブルが使用されます。

初期化

これは、クラス読み込みプロセスの最終段階です。 静的変数には元の値が割り当てられ、静的ブロックが実行されます。