类加载器

    xiaoxiao2025-05-17  13

    类加载器

     1 什么是类加载器

    把.class文件加载到jvm的方法区中,变成一个class对象

    2 得带类加载器

    Class#getClassLoader()

    3 类加载器的分类

    引导 : 类库

    扩展:扩展jar包

    系统 :应用下的class,包含开发人员自己写的类,classpath下的类

    4 类加载器的委托机制

    代码中出现了这么一行:new A()

    系统发现了自己加载的类,其中包含了new A() ,这说明需要系统去加载A类

    系统会给自己的领导打电话,让扩展去自己的地盘去加载A类

    扩展会给自己的领导打电话,让引导去自己的地盘加载A类

    引导去rt.jar去寻找A类

    如果找到了,那么加载之,然后返回A对应的Class对象给扩展,扩展也会把它这个class返回给系统,结束

    如果没找到:

    引导给扩展返回一个null,扩展会去自己的地盘,去寻找A类

    如果找到了。那么加载之,然后返回A对应的Class对象给系统,结束了

    如果没找到:

    扩展返回一个null给系统,系统去自己的地盘(应用程序下)去寻找

    如果找到了,那么加载之,然后返回这个Class,结束

    如果没找到,那么抛出异常ClassNotFoundException

    5 类的解析过程

    class mycalss{ 系统

    new A() //系统

    String 是= new String() 也由系统加载

    class String{  引导

    private Integet i    直接引导加载

    }

    6 自定义类加载器

    继承Classloader

    重写findClass

    7 Tomcat的类加载器

    Tomcat提供了两种类加载器

    特性:

    先自己动手,然后再去委托

    ${CATALINA_HOME} \lib 服务器类加载器

    ${CONTEXT_HOME} \WEB-INF\lib 、${CONTEXT_HOME} \WEB-INF\classes 应用类加载器

    Tomcat类加载顺序:

    应用下的classes:应用类加载器

    应用下的lib:应用类加载器

    服务器下的lib:服务器类加载器

    转载请注明原文地址: https://ju.6miu.com/read-1298991.html
    最新回复(0)