ホームページ  >  記事  >  Java  >  Javaクラスロード機構ClassLoderの詳細説明(画像とテキスト)

Javaクラスロード機構ClassLoderの詳細説明(画像とテキスト)

黄舟
黄舟オリジナル
2017-03-15 13:11:552043ブラウズ

紙の上では、詳細にやらなければいけないことに気づきました --Lu You 生きた水の水源があるように、運河がどのくらい澄んでいるか尋ねてください --Zhu Xi


授業は、メモリにロードされるまで、メモリにロードされるまで、そのライフ サイクル全体には、ロード、検証、準備、解決、初期化、使用、アンインストール (アップロード) の 7 つの段階が含まれます。検証の準備と解析をリンクと呼びます。




1.

Class
Loader クラスローディング

アーキテクチャ

1)、

Bootstrap

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)、各クラスローダーは独自の
名前空間

を維持し、2 つの同一のクラス名を同じ名前空間に出現させることはできません

2)、

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。