12、ブートクラスローダ

12.1、ブートクラスローダー紹介

  JVM起動クラスローダに組み込まれたJVMは、特別なマシンコードの実行を開始したとき、それは拡張クラスローダとクラスローダシステムをロードします、java.lang.ClassLoaderのおよびその他のJavaプラットフォームのクラスをロードします、マシンコードのこの特別なクラスはブートローダー(ブートストラップ)と呼ばれています。

  スタートクラスローダは、Javaクラスではなく、他のクラスローダは、クラスのJavaです。

  スタートクラスローダは、それが全体のロードプロセスを開くための責任がある、プラットフォーム固有のマシン命令です。

  (ブートクラスローダを除く)すべてのクラスローダは、Javaクラスとして実装されています。しかし、常に最初の純粋なJavaクラス・ローダをロードし、全体のロード処理を円滑に進めることができるように、最初のJavaクラス・ローダをロードするためのコンポーネントが業務を開始するためのクラスローダであるています。

  スタートクラスローダはjava.utilのとのjava.langパッケージのクラスなどが含まれ、通常の動作に必要な基本的なコンポーネントのロードJREの責任となります。

12.2、sun.misc.Launcher类

  拡張システムクラスローダクラスローダで定義された2つの内部クラス、あるランチャー内部クラス。「缶http://openjdk.java.net/で見る」ランチャーソースクラス。

パッケージcom.shtec.classLoader; 

インポートsun.misc.Launcherの、

パブリック クラスTest09 {
     公共 静的 ボイドメイン(文字列[]引数){ 
        
        // クラスローダは、ブートクラスローダーによりロードされる 
        のSystem.out.println(のClassLoader。クラス。 getClassLoader()); // NULL 
        
        // 内部システム及び膨張Launcherは、クラスローダを定義ヌルであり、拡張システムは、クラスローダがブートクラスローダーによりロードさ記載 
        のSystem.out.println(ランチャー。クラス .getClassLoader ()); // ヌル
    } 
}

おすすめ

転載: www.cnblogs.com/sunhao1234/p/12354832.html