紙の上では、詳細にやらなければいけないことに気づきました
--Lu You 生きた水の水源があるように、運河がどのくらい澄んでいるか尋ねてください --Zhu Xi
授業は、メモリにロードされるまで、メモリにロードされるまで、そのライフ サイクル全体には、ロード、検証、準備、解決、初期化、使用、アンインストール (アップロード) の 7 つの段階が含まれます。検証の準備と解析をリンクと呼びます。
Class
Loader クラスローディング
Classloader 起動クラスローダー、 java_ home/lib 下のコアを担当します api または -Xbootstrap オプションで指定された jar パッケージがジョブに含まれます。 2)、Extension ClassLoader 拡張クラス ローダー。主に java_home/lib/ext 下の jar パッケージを担当します。 3)、App CLassLoader システム クラス ローダー。主に、Java -classpath/ が指すディレクトリ内のクラスと jar パッケージを担当します。ロード作業;
4)、UserCustom ClassLoader ユーザー定義クラスローダーは、プログラムの実行中に Java.
lang.Classloader
のサブクラスを通じてクラスを動的にロードします。 2. クラスロードの特徴 1)、各クラスローダーは独自の
名前空間
javasecuritysandbox
modelトップレベルクラスローダーセキュリティメカニズムを実装するため, Javaはデフォルトで「親委任ロードチェーン」構造を採用しています。 3. クラスをロードするには 3 つの方法があります:
1) アプリケーションがコマンドラインから起動されると、JVM によって初期化されロードされます。
2)、class.forName() メソッドを通じて動的にロードされます。
3)、ClassLoader().loadClass() メソッドによる動的読み込み。
これら 3 つの読み込み方法は、静的コード ブロックの実行に影響を与えます。
次の例:
public class MyHello { static { System.out.println("hello word"); } }public class Hello { public static void main(String[] args) { ClassLoader loader=Hello.class.getClassLoader(); try { //静态代码块不运行 //loader.loadClass("Test.MyHello"); //静态代码块运行输出hello world //Class.forName("Test.MyHello"); //静态代码块不运行 //Class.forName("Test.MyHello", false, loader); //静态代码块运行输出hello world Class.forName("Test.MyHello", true, loader); } catch (ClassNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } }
1. ClassLoader クラスローディングアーキテクチャ
1) ブートストラップクラスローダーは、主に java_home/lib の下のコア API または で指定された jar を担当するクラスローダーを開始します。 -Xbootstrap オプションを作業にパックします。
2)、Extension ClassLoader 拡張クラス ローダー。主に java_home/lib/ext 下の jar パッケージを担当します。
3)、App CLassLoader システム クラス ローダー。主に、Java -classpath/ が指すディレクトリ内のクラスと jar パッケージを担当します。ロード作業;
4)、UserCustom ClassLoader ユーザー定義クラスローダーは、プログラムの実行中に、Java.lang.Classloader のサブクラスを通じてクラスを動的にロードします。
以上がJavaクラスロード機構ClassLoderの詳細説明(画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。