类加载器的分类

        我们说的类加载就是由类加载器来完成的。

类加载器的分类_第1张图片

1.启动类加载器(引导类加载器)

        这个类加载器由C/C++代码来实现的,是用来加载Java核心类库的,并不继承于java.lang.ClassLoader,没有父加载器。为了安全起见,启动类加载器会加载jdk目录下lib目录里的类库

2.扩展类加载器

        由Java语言编写的,由 sun.misc.Launcher$ExtClassLoader 实现,派生于ClassLoader抽象类,加载jie/lib/ext目录下的类库

3.应用程序类加载器

        由Java语言编写的,由sun.misc.Launcher$AppClassLoader 实现,派生于ClassLoader抽象类,加载用户自己定义的类

public class Test {
    public static void main(String[] args) {
        ClassLoader classLoader = String.class.getClassLoader();
        System.out.println(classLoader); //null 启动类加载器加载

        ClassLoader classLoader1 = Test.class.getClassLoader();
        System.out.println(classLoader1); //sun.misc.Launcher$AppClassLoader@18b4aac2 应用程序类加载器

        ClassLoader classLoader2 = classLoader1.getParent();
        System.out.println(classLoader2); //sun.misc.Launcher$ExtClassLoader@1b6d3586 扩展类加载器

        System.out.println(classLoader2.getParent());  //null 启动类加载器
    }
}

你可能感兴趣的:(JVM,java,开发语言,jvm)