Javaクラスローダーとは何か
Javaのクラスローダーの仕組みは、Java仮想マシン(JVM)が実行時にJavaクラスをメモリにロードして初期化するプロセスのことです。Javaでは、クラスはクラスローダーによってロードされます。クラスローダーは、クラスのバイトコードファイルをJVMにロードし、対応するClassオブジェクトを生成します。
Javaクラスロードの仕組は、次の3つのステップからなる。
- クラスローダーは、クラスの完全修飾名から該当するバイトコードファイルを見つけ、JVMにロードします。クラスローダーは、ローカルファイルシステムやネットワークなど、さまざまなソースからクラスをロードできます。
- クラスローダーはクラスのロード中に、検証、準備、解決など、リンク処理を行います。
- 検証: バイトコードファイルの形式が正しいか、Java 言語仕様に準拠しているかを確認します。
- 準備: クラスの静的変数のメモリの確保、初期値のデフォルト設定
- 解析: クラスのシンボル参照を直接参照に解決する。すなわち、クラス、メソッド、フィールドなどのシンボル参照をメモリ中の直接ポインタに変換する。
- クラスの初期化は、クラスローディング工程の最後の手順になります。クラスの初期化段階で、JVMは、クラスの静的初期化文と静的初期化ブロックを実行します。静的変数に値を割り当てるのです。
クラスローダーの主な役割は、クラスの一意性を保証することと、クラスが必要になったときに正しくロードして初期化し、対応する方法と操作を正しく実行できるようにすることです。クラスローダーは、クラスの動的ロードとアンロードも実現し、プログラムの柔軟性とパフォーマンスを向上させます。