java虚拟机(十)---类加载器介绍

java虚拟机(十)—类加载器介绍

  1. jvm支持两种类加载器,引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)。
  2. 从概念上讲,自定义加载器一般是指开发人员自定义的一类加载器,但是java虚拟机规范却没有这么定义,而是将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器。
    在这里插入图片描述
    上图中,Bootstrap Class Loader 为引导类加载器,其他的都为自定义类加载器。
    这里的四者的关系是包含关系,不是上层下层,也不是父子继承关系。
    也可以从编写语言来分类,Bootstrap Class Loader是使用c和c++来编写,其他的是使用java语言编写。
  3. 类加载器初识
public class testsss {
    
    

    public static void main(String[] args) {
    
    
        //获取系统类加载器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        System.out.println(systemClassLoader);//sun.misc.Launcher$AppClassLoader@18b4aac2

        //获取其上层,扩展类加载器
        ClassLoader extClassLoader = systemClassLoader.getParent();
        System.out.println(extClassLoader);//sun.misc.Launcher$ExtClassLoader@119d7047

        //试图获取引导类加载器
        ClassLoader bootstrapClassLoader = extClassLoader.getParent();
        System.out.println(bootstrapClassLoader);//null

        //对于用户自定义类的加载器  ==> 使用系统类加载器加载
        ClassLoader classLoader = testsss.class.getClassLoader();
        System.out.println(classLoader);//sun.misc.Launcher$AppClassLoader@18b4aac2

        //String类是使用引导类加载器加载, java的核心类库都是使用引导类加载器加载
        ClassLoader classLoader1 = String.class.getClassLoader();
        System.out.println(classLoader1);//null

    }
}

》》》博主长期更新学习心得,推荐点赞关注!!!
》》》若有错误之处,请在评论区留言,谢谢!!!

猜你喜欢

转载自blog.csdn.net/qq_41622739/article/details/105056009