ClassLoader结构

jdk加载的4个步骤

CustomClassLoader 用户自定义的classLoader

APPClassLoader主要加载classPath下面的class

Extension ClassLoader 主要负责加载JAVA_HOME/jre/lib/ext/目下的所有jar

       BootStrap ClassLoader:负责加载JDK中的核心类库,如:rt.jar、resources.jar、charsets.jar等

java类加载器采用双亲委托模式

则是从下级往上级询问是否有加载。如果没加载 再从上级往下下级查找 如果找到就加载 没有找到就继续向下询问

比如 在程序创建一个Test类。然后在main方法打印这个这个Test类的classLoader 会打印 APPClassLoader

因为appClassLoader会逐个向上询问是否加载  则都没有加载  然后从上级bootstrap到Extension ClassLoader会在他的扫描的jar里面找有没有Test这个class都没有找到 最终APPClassLoader在classPath找到这个类  加载

我们改变一下程序 将Test类打包成一个jar 放到ext目录下

再次打印则会输出加载类是Extension ClassLoader

双亲委托模式的好处

1. 防止重复加载

缺点 :

上层类加载器无法获得下层类加载器加载的类

双亲委托模式是jdk的默认实现 但是不一定要完全按照这个模式

比如tomcat webappClassLoader 就会先加载自己的class  找不到再委托父类

自定义ClassLoader 必须继承 classLoader类

   classLoader的重要方法

                    loadClass(String name)文件名字

             defineCalss(byte[] b int off,int lent) 根据class byte[] 数据加载class
        findClass() loadClass内部会调findClass方法
        findLadedClass(String name) 如果加载了 则不加载 没加载 才加载
为什么要重写classLoader
     因为默认实现的几种classLoader只会加载特定路径下面的class     我们往往会根据需求加载别的路径下的class 比如网络请求的class二进制信息

最新文章

  1. centos下ssh无密码验证
  2. 2795: [Poi2012]A Horrible Poem
  3. MarkMan – 马克鳗,让设计更有爱!
  4. 对java多线程的认识
  5. word文档标题级别批量更改——批量降级与升级实例
  6. OpenJudge 2680 化验诊断 C++
  7. 从头开始学JavaScript (五)——操作符(二)
  8. iOS自定义转场动画的实现
  9. dock使用方法
  10. typescript 安装
  11. 【Common】-NO.122.common.1 - pv、uv、ip,tps、qps、rps术语
  12. .NET SQLServer数据库转MySql
  13. Linux命令之nohup和重定向
  14. 第十七章 java8特性
  15. Scala进阶之路-Spark独立模式(Standalone)集群部署
  16. C# 部分类使用partial修饰
  17. 176条DevOps人员常用的linux命令速查表
  18. zabbix的启动和关闭脚本
  19. Java-idea-eclipse-快捷键【mac,win】
  20. POJ1062不错的题——spfa倒向建图——枚举等级限制

热门文章

  1. bzoj4397【Usaco2015 Dec】Breed Counting
  2. case when in sql server's stored procedure
  3. 3n+1问题
  4. hdoj--5619--Jam's store(最小费用最大流)
  5. 【POJ 2248】 Addition Chain
  6. 排序系列 之 归并排序算法 —— Java实现
  7. Gym - 101981A The 2018 ICPC Asia Nanjing Regional Contest A.Adrien and Austin 简单博弈
  8. 网络简要<入门篇>对应配置代码
  9. Redis的事务讲解
  10. jQuery获取及设置单选框、多选框、文本框