Day28---类加载器笔记
来源:互联网 发布:淘宝网访问不了 编辑:程序博客网 时间:2024/06/03 09:03
类加载器
1. 什么是类加载器
* 把.class文件加载到JVM的方法区中,变成一个Class对象!
2. 得到类加载器
* Class#getClassLoader()
3. 类加载器的分类
它们都是片警!
* 引导:类库!
* 扩展:扩展jar包
* 系统:应用下的class,包含开发人员写的类,和第三方的jar包!classpath下的类!
系统类加载器的上层领导:扩展
扩展类加载器的上层领导:引导
引导没上层,它是BOSS
======================================
4. 类加载器的委托机制
* 代码中出现了这么一行:new A();
> 系统发现了自己加载的类,其中包含了new A(),这说明需要系统去加载A类
> 系统会给自己的领导打电话:让扩展去自己的地盘去加载A类
> 扩展会给自己的领导打电话:让引导去自己的地盘去加载A类
> 引导自己真的去rt.jar中寻找A类
* 如果找到了,那么加载之,然后返回A对应的Class对象给扩展,扩展也会它这个Class返回给系统,结束了!
* 如果没找到:
> 引导给扩展返回了一个null,扩展会自己去自己的地盘,去寻找A类
* 如果找到了,那么加载之,然后返回A对应的Class对象给系统,结束了!
* 如果没找到
> 扩展返回一个null给系统了,系统去自己的地盘(应用程序下)加载A类
* 如果找到了,那么加载之,然后返回这个Class,结束了!
* 如果没找到,抛出异常ClassNotFoundException
5. 类的解析过程
class MyApp {//被系统加载
main() {
A a = new A();//也由系统加载
String s = new String();//也由系统加载!
}
}
class String {//引导
private Integer i;//直接引导加载
}
=====================
6.自定义类加载器
* 继承ClassLoader
* 重写findClass()
=====================
7. Tomcat的类加载器
Tomcat提供了两种类加载器!
* 服务器类加载器:${CATALINA_HOME}\lib,服务器类加载器,它负责加载这个下面的类!
* 应用类加载器:${CONTEXT_HOME}\WEB-INF\lib、${CONTEXT_HOME}\WEB-INF\classes,应用类加载器,它负责加载这两个路径下的类!
引导
扩展
系统
特性:
服务器类加载器:先自己动手,然后再去委托
应用类加载器::先自己动手,然后再去委托
1. 什么是类加载器
* 把.class文件加载到JVM的方法区中,变成一个Class对象!
2. 得到类加载器
* Class#getClassLoader()
3. 类加载器的分类
它们都是片警!
* 引导:类库!
* 扩展:扩展jar包
* 系统:应用下的class,包含开发人员写的类,和第三方的jar包!classpath下的类!
系统类加载器的上层领导:扩展
扩展类加载器的上层领导:引导
引导没上层,它是BOSS
======================================
4. 类加载器的委托机制
* 代码中出现了这么一行:new A();
> 系统发现了自己加载的类,其中包含了new A(),这说明需要系统去加载A类
> 系统会给自己的领导打电话:让扩展去自己的地盘去加载A类
> 扩展会给自己的领导打电话:让引导去自己的地盘去加载A类
> 引导自己真的去rt.jar中寻找A类
* 如果找到了,那么加载之,然后返回A对应的Class对象给扩展,扩展也会它这个Class返回给系统,结束了!
* 如果没找到:
> 引导给扩展返回了一个null,扩展会自己去自己的地盘,去寻找A类
* 如果找到了,那么加载之,然后返回A对应的Class对象给系统,结束了!
* 如果没找到
> 扩展返回一个null给系统了,系统去自己的地盘(应用程序下)加载A类
* 如果找到了,那么加载之,然后返回这个Class,结束了!
* 如果没找到,抛出异常ClassNotFoundException
5. 类的解析过程
class MyApp {//被系统加载
main() {
A a = new A();//也由系统加载
String s = new String();//也由系统加载!
}
}
class String {//引导
private Integer i;//直接引导加载
}
=====================
6.自定义类加载器
* 继承ClassLoader
* 重写findClass()
=====================
7. Tomcat的类加载器
Tomcat提供了两种类加载器!
* 服务器类加载器:${CATALINA_HOME}\lib,服务器类加载器,它负责加载这个下面的类!
* 应用类加载器:${CONTEXT_HOME}\WEB-INF\lib、${CONTEXT_HOME}\WEB-INF\classes,应用类加载器,它负责加载这两个路径下的类!
引导
扩展
系统
特性:
服务器类加载器:先自己动手,然后再去委托
应用类加载器::先自己动手,然后再去委托
阅读全文
0 0
- Day28---类加载器笔记
- Day28-动态代理笔记
- day28
- Day28
- day28
- Summary Day28
- Java-类加载器笔记
- Java-类加载器笔记
- java类加载器笔记
- 框架 day28 Struts2-封装数据,类型转换,数据校验,国际化,拦截器
- javascript实现倒计时-------Day28
- day28安卓线程
- Day28-Linux入门01
- 崔希凡JavaWeb笔记day28(JavaWeb完毕)(期末,暂停更新)(2016年11月16日12:24:03)
- 学习笔记--类加载器,代理类
- java类加载器学习笔记
- Java类加载器笔记(Java高新技术)
- 学习笔记08—类加载器
- 修改markdown里面的class标签
- Python的内存管理、对象的引用
- 窗口子类化
- ListView点击变色
- 2017-12-9小计
- Day28---类加载器笔记
- Day28-动态代理笔记
- eclipse最新版eclipse-jee-neon-3下载
- Eclipse 4.6 Neon 的Tomcat插件安装方法
- mysql 字符集问题 set-server
- 网络编程2-TCP UDP Socket使用详解
- 160个练手CrackMe-038
- iOS开发UI篇—Quartz2D介绍 (一)
- Qt5 release程序