`
de6566088
  • 浏览: 31173 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

类加载器委托机制

阅读更多

public class ClassLoadTest {
 /* 知识储备 */
 /*
  * 类加载器 类加载器是在类未开始时进行CLASS的加载
  * 其中包括BootStrap(核心,由C++编写的2进制编码,是开启类加载器的类)JRE/lib/rt.jar
  * ExtClassLoader,AppClassLoader其中Ext为App的父类 Ext主要是加载jre下的jar文件
  * 其中App加载Classpath下的类
  * Ext加载JRE/LIB/EXT/*.JAR
  * BootStrap 加载 JRE/LIB/rt.jar
  */
 /*
  * 类加载器的原理,还有类加载器的树形结构
  *
  * 委托加载机制,调用子类时找父加载器app子层要找但是不找而是先找父类加载器, 没有父类,开始找自己有么,没有加载成功将下放在下级
  */

 // 模板方法设计模式,总体流程在父类中规定好,在细节上留一个抽象方法
 // ClassLoader classLoader = new ClassLoader()

 /*
  * 一下为类加载器的测试方法 1.测试类加载器名称
  */
 public static void main(String[] args) {
  // 输出ClassLoadTest类的类加载器名称
//  System.out.println(ClassLoadTest.class.getClassLoader().getClass()
//    .getName());
  //获取系统类的类加载器
//  System.out.println(System.class.getClassLoader());
  
  /* 将此类打包成JAR包放入到jre/ext的目录下,此类在运行时就将在EXT目录先进行加载,app加载器将不
   * 再加载此类。
   * 得到结论(委托机制,统一管理):
   * 从最低层发出请求,推到最顶层(开始找,没有找到就向下级找)
   * BootStrap -->  Ext  -->  App  (父-->子)
   * 请求流向(但并没有开始找)   App --> Ext --> Boot (开始查找,找到后进行加载没有继续向下) --> Ext -- App
   * */
  ClassLoader classLoader = ClassLoadTest.class.getClassLoader();
  
  while(classLoader != null){
   System.out.println(classLoader.getClass().getName());
   classLoader = classLoader.getParent();
  }
  System.out.println(classLoader);
  System.out.println(new ForClassLoad());
 }
}

分享到:
评论

相关推荐

    解析Java虚拟机中类的初始化及加载器的父委托机制共14页

    解析Java虚拟机中类的初始化及加载器的父委托机制共14页.pdf.zip

    类加载思维导图,原理、机制等

    类加载思维导图 1、类加载器的原理 1)类缓存 2)类加载器 2、类加载机制 加载、验证、准备、解析、初始化 3、类加载的时机 主动、被动引用 4、双亲委托机制

    解析Java虚拟机中类的初始化及加载器的父委托机制

    主要介绍了Java虚拟机中类的初始化及加载器的父委托机制,包括命名空间等深层次的知识点讲解,需要的朋友可以参考下

    Tomcat 类加载器的实现方法及实例代码

    JVM 在加载时,采用的是一种双亲委托机制,当类加载器要加载一个类时,加载顺序是: 首先将请求委托给父加载器,如果父加载器找不到要加载的类然后再查找自己的存储库尝试加载 这个机制的好处就是能够保证核心类库不...

    面试必问之jvm与性能优化

    委托模型机制的工作原理很简单:当类加载器需要加载类的时候,先请示其Parent(即上一层加载器)在其搜索路径载入,如果找不到,才在自己的搜索路径搜索该类。这样的顺序其实就是加载器层次上自顶而下的搜索,因为加载...

    Java虚拟机工作原理详解

    类加载器之间存在一种委派模式(Delegation Mode),当 JVM 加载一个类的时候,下层的加载器会将任务委托给上一层类加载器,上一层加载检查它的命名空间中是否已经加载这个类,如果已经加载,直接使用这个类。...

    深入解析Java中的Classloader的运行机制

    主要介绍了Java中的Classloader的运行机制,包括从JVM方面讲解类加载器的委托机制等,需要的朋友可以参考下

    JAVA_API1.6文档(中文)

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

    java api最新7.0

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

    [Java参考文档].JDK_API 1.6

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

    Java 1.6 API 中文 New

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    8.1 实例构造器和类(引用类型) 8.2 实例构造器和结构(值类型) 8.3 类型构造器 8.3.1 类型构造器的性能 8.4 操作符重载方法 8.4.1 操作符和编程语言互操作性 8.5 转换操作符方法 8.6 扩展方法 8.6.1 规则和...

    CLR.via.C#.(中文第3版)(自制详细书签)

    8.1 实例构造器和类(引用类型) 8.2 实例构造器和结构(值类型) 8.3 类型构造器 8.3.1 类型构造器的性能 8.4 操作符重载方法 8.4.1 操作符和编程语言互操作性 8.5 转换操作符方法 8.6 扩展方法 8.6.1 规则和...

    积分管理系统java源码-knowledge:这是我的知识,包括我所有已知的

    类加载器 常用设计模式 模板模式 单例模式 & 多例模式 代理模式 策略模式 原型模式 工厂模式 委托 其他 Spring5 IOC容器设计原理及高级特性 AOP设计原理 FactoryBean和BeanFactory Spring事务处理机制 Spring JDBC ...

    CLR.via.C#.(中文第3版)(自制详细书签)Part3

    8.1 实例构造器和类(引用类型) 8.2 实例构造器和结构(值类型) 8.3 类型构造器 8.3.1 类型构造器的性能 8.4 操作符重载方法 8.4.1 操作符和编程语言互操作性 8.5 转换操作符方法 8.6 扩展方法 8.6.1 规则和...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    8.1 实例构造器和类(引用类型) 8.2 实例构造器和结构(值类型) 8.3 类型构造器 8.3.1 类型构造器的性能 8.4 操作符重载方法 8.4.1 操作符和编程语言互操作性 8.5 转换操作符方法 8.6 扩展方法 8.6.1 规则和...

    JavaAPI1.6中文chm文档 part1

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

    JavaAPI中文chm文档 part2

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

    [Java参考文档]

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

Global site tag (gtag.js) - Google Analytics