类加载器

类加载器

 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:服务器类加载器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值