6.有哪些类加载器?分别有什么作⽤?

  1. 启动类加载器(Bootstrap ClassLoader):这个类加载器是由 C++ 语⾔实现的,是虚拟机⾃身的⼀部分。负责 将存在 <JAVA_HOME>\lib ⽬录中的,或者被 -Xbootclasspath 参数所指定的路径中的类库加载到虚拟机内存 中。启动内加载器⽆法被 Java 程序直接引⽤,⽤户在编写⾃定义类加载器时,如果需要把加载请求委派给启 动类加载器,直接使⽤ null 即可;

     

  2. 其他类加载器:由 Java 语⾔实现,独⽴于虚拟机外部,并且全都继承⾃抽象类 java.lang.ClassLoader。如扩 展类加载器和应⽤程序类加载器:

    (1)扩展类加载器(Extension ClassLoader):这个类加载器由sun.misc.Launcher$ExtClassLoader 实现,它负责加载<JAVA_HOME>\lib\ext⽬录中的,或者被 java.ext.dirs 系统变量所指定的路径中的所有类库,开发者可以直接使⽤扩展类加载器。

    (2)应⽤程序类加载器 (Application ClassLoader):这个类加载器由 sun.misc.Launcher$AppClassLoder 实现。由于个类加载器是 ClassLoader 中的 getSystemClassLoader() ⽅法的返回值,所以⼀般也称之为系统类加载器。它负责加载⽤户路径(ClassPath)所指定的类库,开发者可以直接使⽤这个类加载器,如果应⽤程序中没有 ⾃定义过⾃⼰的类加载器,⼀般情况下这个就是程序中默认的类加载器。

posted @ 2021-08-11 15:44  RainsX  阅读(310)  评论(0)    收藏  举报