jvm には、上から下に 3 つのクラス ローダー (ユーザー定義ローダー) があります:
bootstrap classLoader このクラス ローダーは、Java 仮想マシンの起動時に jdk コア クラス ライブラリをメモリにロードします
extension classLoader extension クラス ローダー、このクラスローダーは、jre
システムのいくつかのjarをロードするクラスライブラリです。 classLoader システムクラスローダー、このクラスローダーは、クラスパスの下にある指定されたクラスライブラリをメモリにロードします
カスタム classLoader ユーザー定義のクラスローダー、クラスローダーは、プログラマー自身。プログラムの実行中に、クラス ファイルは java.lang.classLoader のサブクラスを通じて動的にロードされます
ロード メカニズム:
Java クラスのロード メカニズムは、親委任メカニズムと呼ばれます。ローダーがクラスをリクエストすると、まずクラスがメモリにロードされているかどうかをボトムアップでクエリし、ロードされている場合はクラスを直接返します。ロードされていない場合は、まず親クラス ローダーにクラスのロードを委託します。現在のローダーに親クラスがある場合は、親クラスがクラスをロードできない場合にのみ、それ自体をロードできない場合は次のレベルに戻ります。場合、クラスが見つからない例外 (ClassNotFoundException) が返されます。たとえば、java.lang.String クラスをロードするためにユーザー定義のローダーが必要な場合、java.lang.String は jdk のコア ライブラリ クラスであるため、ユーザー定義のローダーがロードされると実際にはブートストラップ classLoader が使用されます。ローダーが使用されると、最初に親クラス ローダーにデリゲートされます。
以上がJAVA開発におけるclassLoaderクラスロード機構の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。