検索

ホームページ  >  に質問  >  本文

java - 所有类都是由Object类的记载器加载的吗?

看到网上这么说:

双亲委派机制描述
某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。

首先将加载任务委托给父类加载器,依次递归 这句话的意思是所有类都是由Object类的记载器加载的吗?

大家讲道理大家讲道理2804日前640

全員に返信(3)返信します

  • 大家讲道理

    大家讲道理2017-04-18 10:50:25

    Java 仮想マシンの最初のクラス ローダーはブートストラップです。このローダーは Java 仮想マシン カーネルにネストされており、C++ で書かれたバイナリ コードです。

    委任メカニズムを使用すると、親クラスが再帰的に検索されます。つまり、ブートストラップを使用してロードを試行し、見つからない場合はダウンすることをお勧めします。バイトコードの 2 つのコピーがメモリ内に出現しないようにします。

    クラスクラスローダーを誤解しています。

    クラスが記録されるときは、まず現在のスレッドの

    クラスローダーを使用して、スレッド内の最初のクラスをロードします。たとえば、このクラスは ClassA で、クラスローダーは ClassLoaderA です。

    ClassA が ClassB を参照する場合、システムは ClassLoaderA を使用して ClassB をロードします。

    現在 2 つのクラスがあります (

    簡易版、実際には 2 つ以上のクラス)。

    ClassX と ClassY がメモリにロードされており、両方とも ClassZ を参照している状況を考えます。では、誰が ClassZ をロードするのでしょうか。

    明らかに、上記のロード手順によれば、ClassZ の 2 つのコピーが表示されます。ClassX は 1 回ロードされ、ClassY は再度ロードされます。 ClassY は ClassX がロードされたことを知らないためです。

    この問題を解決するには、親クラスを再帰的に検索します。

    具体的な手順は、まず BootstrapClassLoader から検索し、BootstrapClassLoader がこのクラスをロードしていない場合は、そのクラスを返します。このクラスが見つかるまで検索を続けます。このスレッドのクラス ローダーが見つからない場合は、クラスがロードされていないことを意味し、現在のスレッドのローダーを使用してクラスがロードされます。

    を使用して、現在のスレッドのクラスローダーを取得できます。 getContextClassLoader()

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 10:50:25

    Java には、システム クラス ローダーとユーザー定義クラス ローダーの 2 種類のクラス ローダーがあります。

    システム クラス ローダーには、JDK1.6 の ブートストラップ クラス ローダー など、
    System.getProperty("sun.boot.class.path") クラスロードパスを取得できますBootstrap Class Loader在JDK1.6下,通过
    System.getProperty("sun.boot.class.path")可以得到类加载路径

    JAVA_HOME\jre6\lib\resources.jar;  
    JAVA_HOME\Java\jre6\lib\rt.jar;  
    JAVA_HOME\jre6\lib\sunrsasign.jar;  
    JAVA_HOME\jre6\lib\jsse.jar;JAVA_HOME\jre6\lib\jce.jar;  
    JAVA_HOME\jre6\lib\charsets.jar;  
    JAVA_HOME\jre6\lib\modules\jdk.boot.jar;  
    JAVA_HOME\jre6\classes 

    这些路径下的class是由Bootstrap负责,其它路径下的class的递归到Bootstrap リーリー

    これらのパスのクラスは Bootstrap によって処理され、他のパスのクラスが Bootstrap に再帰され、クラス ファイルが見つからない場合は、次のパスでロードされます。サーバーは、対応するパスに移動してロードします。 🎜

    返事
    0
  • 迷茫

    迷茫2017-04-18 10:50:25

    上記の人が言ったことは正しいので、JVM 関連の本を読んで詳しく学ぶことをお勧めします。

    返事
    0
  • キャンセル返事