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

JVMは、クラスとインターフェースのロード、リンク、および初期化のプロセスを動的に管理します。ロードプロセス中に、JVM finds the binary representation of a class and creates it.

リンクプロセス中に、 loaded classes are combined into the run-time state of the JVM so that they can be executed during the initialization phase。JVMは基本的に、リンクプロセスのために実行時定数プールに格納されているシンボルテーブルを使用します。初期化は実際に構成されていますexecuting the linked classes

ローダーの種類

ザ・ BootStrapクラスローダーは、クラスローダー階層の最上位にあります。JREのlibディレクトリに標準のJDKクラスをロードします。

ザ・ Extension クラスローダーはクラスローダー階層の中間にあり、ブートストラップクラスローダーの直接の子であり、JREのlib \ extディレクトリにクラスをロードします。

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

リンク

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

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

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

Resolution−すべてのシンボリックメモリ参照は元の参照に置き換えられます。これを実現するために、クラスのメソッド領域の実行時定数メモリ内のシンボルテーブルが使用されます。

初期化

これは、クラスのロードプロセスの最終フェーズです。静的変数には元の値が割り当てられ、静的ブロックが実行されます。