`
de6566088
  • 浏览: 31661 次
  • 性别: 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类加载器

    自定义Java类加载器允许我们根据特定需求扩展默认的加载机制,例如,从非标准位置加载类或者实现动态加载。在Java中,类加载过程分为加载、验证、准备、解析和初始化五个阶段。 首先,让我们了解Java中的默认类加载...

    深入java虚拟机(六)——类加载的父亲委托机制1

    在实际开发中,父亲委托机制可以用于实现类隔离,比如不同的模块可以使用不同的类加载器,每个模块有自己的类加载器,这样可以防止不同模块之间的类发生冲突。 总之,Java的类加载器父亲委托机制是一种设计精巧、...

    Java类加载器原理

    3. 加载器委托加载机制: 类加载器遵循“双亲委派模型”(Delegation Model)。当一个类加载器接收到加载类的请求时,它首先会委托其父类加载器去尝试加载,如果父类加载器无法加载,再由当前加载器尝试。这个过程...

    深入研究Java类加载机制 深入研究Java类加载机制

    Java中的类加载器遵循一个原则叫做“父母委托模型”,即当一个类加载器收到类加载请求时,首先将加载任务委托给父类加载器,只有当父类加载器无法完成加载时才会尝试自己加载。 这种设计模式的好处在于避免了类的...

    类加载器(java)

    类加载器的工作机制遵循“双亲委派模型”:当一个类加载器接收到加载类的请求时,它首先会委托父加载器去尝试加载,只有在父加载器无法加载的情况下,子加载器才会尝试自己去加载。这种设计可以防止类的重复加载,并...

    tomcat类加载器

    类加载器遵循双亲委派模型,这意味着当一个类加载器尝试加载类时,它首先会将请求委托给其父类加载器,直到到达顶层的Bootstrap ClassLoader,如果父类加载器无法找到该类,子类加载器才会尝试自己加载。 在Tomcat...

    自定义类加载器

    ### 类加载器的工作机制 类加载器遵循“双亲委托模型”进行工作。当一个类加载器接收到加载类的请求时,它首先会委托其父加载器尝试加载,只有当父加载器无法找到对应的类时,才会尝试自己加载。这种设计确保了类的...

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

    本文将深入探讨Java虚拟机中的类初始化以及加载器的父委托机制。 一、类的加载 类加载是JVM启动时或运行中根据需要动态加载类到内存中的过程。这个过程分为三个阶段:加载、链接和初始化。 1. 加载:JVM通过类...

    Java的类加载器

    当一个类加载器收到加载类的请求时,它首先会委托父类加载器去尝试加载,只有当父类加载器无法加载时,子类加载器才会尝试自己加载。这种设计有助于维护类加载的一致性和安全性。 4. 类加载器与类的关系: 每个类...

    Java类加载器机制与模型.pdf

    Java类加载器采用了**双亲委派模型(Parent Delegation Model)**,这意味着当一个类加载器收到加载类的请求时,它首先会委托其父类加载器去尝试加载,只有当父类加载器无法加载时,当前类加载器才会尝试自己加载。...

    类加载器代码

    类加载器之间存在层次结构,当一个类加载器接收到加载类的请求时,它会先委托父类加载器去尝试加载,只有当父类加载器无法加载时,子类加载器才会尝试自己加载,这就是双亲委派模型。这种设计可以避免类的重复加载...

    java类加载器-tomcat中的类加载器

    每个类加载器在尝试加载类时,会先委托给父类加载器,只有当父类加载器无法加载时,才会尝试自己加载。这种机制保证了Java的核心类库只被加载一次,同时也确保了类的唯一性。 Tomcat的类加载器工作流程可以总结为:...

    java类加载器和核心机制.pdf

    在类加载器的层次结构中,还有一个重要的机制是双亲委托机制。这是一种代理模式,使得一个类加载器在加载类时会先委托给父加载器进行尝试,只有当父加载器无法完成这个加载任务时,子加载器才会尝试自己去加载这个类...

    ClassLoader类加载器

    3. Application ClassLoader:也称为系统类加载器,负责加载用户类路径`-cp`或`-classpath`指定的所有类。 当一个类被加载时,如果它的父类加载器无法加载该类,那么会将任务委派给子类加载器。这就是著名的"委托...

    java类加载机制

    双亲委派模型是Java类加载器的重要特性之一,它的基本流程是:当一个类加载器收到加载类的请求时,它首先不会自己去尝试加载这个类,而是把请求委托给父类加载器去完成,每个层次的类加载器都是如此。如果父类加载器...

    tomcat 类加载机制 —— ClassLoader

    类加载遵循“双亲委托模型”,即当一个类加载器收到加载类的请求时,它会首先委托父类加载器尝试加载,只有当父类加载器无法找到对应的类时,才会自己尝试加载。这样保证了基础类库的一致性,同时也允许Web应用覆盖...

    深入Java虚拟机_002_深入详解JVM之类加载器深度剖析、根、扩展及系统类加载器

    当一个类加载器接收到加载类的请求时,它首先会委托父类加载器尝试加载,只有当父类加载器无法加载时,当前类加载器才会尝试自己加载。这样设计的目的是保证Java核心类库的稳定性,防止用户自定义类覆盖系统核心类。...

    网络类加载器实现

    默认的类加载器包括bootstrap classloader(引导类加载器)、extension classloader(扩展类加载器)和appclassloader(应用程序类加载器),它们按照双亲委托模型进行工作,从基础到具体逐层尝试加载类。...

    JAVA的类加载器的工作原理.docx

    假设你有一个应用需要的类叫作Abc.class,首先加载这个类的请求由Application类加载器委托给它的父类加载器Extension类加载器,然后再委托给Bootstrap类加载器。Bootstrap类加载器会先看看rt.jar中有没有这个类,...

Global site tag (gtag.js) - Google Analytics