Java之类加载器

类加载器

1.什么是类加载器:把.class文件加载到JVM的方法中,变成一个class对象
2.得到类加载器:class#getClassLoader()
3.类加载器的分类

引导:类库
扩展:扩展jar包
系统:应用下的class,包含开发人员写的类,和第三方jar包

系统类加载器的上层领导:扩展
扩展类加载器的上层领导:引导
引导没有上层!

4.类加载器的委托机制

例如:代码中出现了一行:new A();

系统发现了自己加载的类,其中包含了new A(),这说明需要系统去加载A类
系统会找自己的领导,让扩展去自己的地盘去加载A类
扩展去找自己的领导,让引导去自己的底盘去加载A类
引导去rt.jar中寻找A类
如果找到了加载之,然后返回A对应的Class对象给扩展,扩展会给系统
如果没有找到引导会给扩展发送一个null,扩展回去自己的地盘去寻找A类
如果找到了加载之,然后返回A对应的Class对象给系统,结束
如果没有找到,则返回一个null给系统,系统会在自己的地盘(应用程序下)去寻找A类,如果找到了加载之,如果没有找到则抛出一个ClassNotFoundException异常

5.类的解析过程

Class MyApp{//被系统加载
Main()
A a = new A();//被系统加载
String s = new String();//被系统加载
}
}

Class String{//直接引导加载
Private integer i ;//引导加载
}

6.自定义类加载器

继承classLoader
重写findClass()

7.Tomcat加载器

Tomcat会为每个项目提供一个类加载器。Tomcat提供的类加载器负责加载自己项目下的类,即WEB-INF\lib和WEB-INF\classes下的类。但Tomcat提供的类加载器不会使用传统的代理模式,而实现自己去加载,如果加载不到,在使用代理模式
Tomcat提供的类加载器有这样一个好处,就是可以使自己项目下的类优先被加载

类加载器优先级:由高到低

应用下的classes:应用类加载器
应用下的lib:应用类加载器
服务器下的lib:服务器类加载器

作者为一名大三学生,此篇文章为视频学习而写的复习笔记,如有重复纯属巧合。联系邮箱:898877041@qq.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值