`
chansybinbin
  • 浏览: 12658 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

(转)Java Class Loader的委托模型

阅读更多
1:BootStrapClassLoader  :加载java运行过程中的核心类库JRE\lib\rt.jar, sunrsasign.jar, charsets.jar, jce.jar, jsse.jar, plugin.jar 以及存放在JRE\classes里的类
2:ExtClassLoader           :加载JRE\lib\ext 或者目录下的库文件目录下的类(包括任何子目录,有别于其他两个ClassLoader)
3:AppClassLoader          :加载CLASSPATH变量指定路径下的类

A、其中AppClassLoader的parent(并非父类)为ExtClassLoader, ExtClassLoader的parent为BootStrapClassLoader,根据ClassLoader的委托模型,当要加载一个class时候会先让其parent来加载,如果parent找不到的话,再由自己来加载。
B、加载的第一个类的ClassLoader如果为BootStrapClassLoader的话,那么其他的所有类也必须又BootStrapClassLoader来加载,如果加载第一个类的ClassLoader为AppClassLoader的话,则类的加载按规则A来执行。

BootStrapClassLoader的默认Load路径可以通过 System.getProperty("sun.boot.class.path");来取得
ExtClassLoader的默认Load路径可以通过 System.getProperty("java.ext.dirs");来取得
AppClassLoader的默认Load路径可以通过 System.getProperty("java.class.path");来取得

其中ExtClassLoader,AppClassLoader的load可以通过命令:java -Djava.ext.dirs xxx xxx,java -Djava.class.path xxx xxx来改变
而BootStrapClassLoader的路径是用C++写死在JVM里面的,即使通过java -Dsun.boot.class.path xxx xxx来改变路径也不起任何作用。
分享到:
评论

相关推荐

    Java Class Loader总结.doc

    Java的类加载机制遵循双亲委托模型,这是一种确保类只被加载一次的策略,从而维护了类的唯一性和安全性。 双亲委托模型的工作流程如下: 1. 当一个ClassLoader需要加载一个类时,它首先检查本地缓存,看这个类是否...

    java class loader(JAVA类加载器)

    类加载机制遵循双亲委派模型,即当一个类加载器接收到加载类的请求时,它首先会把这个请求委托给其父类加载器去完成,只有当父类加载器无法加载时,子加载器才会尝试自己加载。这种设计能确保基础类库的一致性,...

    java 类加载器 class loader

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

    loader in java houtian

    Java的类加载机制支持双亲委派模型,即一个类加载器接收到加载请求时,首先会把这个请求委托给父类加载器处理,只有当父类加载器无法加载时,当前加载器才会尝试自己加载。这种设计有助于避免类的重复加载和保证类...

    Java虚拟机class文件原理

    委托模型规定,当一个类加载器需要加载类时,它首先会委托其父加载器尝试加载,只有当父加载器无法找到类时,才会自己进行加载。这种机制保证了类加载的有序性和一致性。 例如,当我们打印类加载器的层级关系时,...

    class-loader测试工程

    Java类加载器遵循双亲委派模型,即当一个类加载器接收到加载类的请求时,它首先会委托父加载器去尝试加载,只有当父加载器无法加载时,子加载器才会尝试自己加载。这样设计是为了保证核心库的稳定性和安全性,避免...

    Ejb class loader

    Java采用双亲委派模型进行类加载,即当一个类加载器需要加载类时,它会首先委托其父加载器尝试加载,只有当父加载器无法加载时,当前加载器才会尝试自己加载。这种设计避免了类的重复加载,同时保持了类加载的有序性...

    java自定义类加载classloader文档,包括代码

    Java类加载器遵循双亲委派模型(Parent Delegation Model),即每个类加载器在尝试加载一个类之前,都会先委托给父加载器进行加载。如果父加载器能够成功加载,则返回;否则再由子加载器继续加载。 #### 五、自定义...

    Java类加载器学习总结.pdf

    2. **双亲委托模型**: 类加载器的工作遵循双亲委托机制,即子加载器优先将加载任务委托给父加载器处理,只有当父加载器无法加载时,子加载器才会尝试自己加载。这个机制保证了Java核心类库的唯一性,避免了不同...

    Java 动态加载jar文件示例

    它们按照层次结构工作,遵循"委托模型",即从顶层的启动类加载器开始尝试加载类,如果找不到则逐级向下委托。 要实现动态加载jar文件,我们需要创建自定义的类加载器。这个类加载器需要继承`java.lang.ClassLoader`...

    Java 类加载机制 ClassLoader Class.forName.pdf

    Java 类加载机制是Java虚拟机(JVM)中的一个重要组成部分,它负责将编译后的字节码文件(.class)加载到内存中,形成Class对象,以便于Java程序能够识别并使用这些类。深入理解类加载机制不仅有助于我们更好地理解JVM的...

    关于Classloader的总结!loadClass的分析和加载细节的分析

    Java中的类加载器通常遵循双亲委托模型。当一个类加载器接收到加载类的请求时,它首先会委托给其父类加载器尝试加载,只有当父类加载器无法加载时,才会尝试自己加载。这种设计确保了类的唯一性,防止了类的重复...

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

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

    Java的类装载器和命名空间

    在Java编程语言中,类装载器(ClassLoader...通过类装载器的双亲委托模型,Java能够确保安全地加载和管理类,而命名空间则提供了有序且无冲突的类组织方式。理解这些概念对于深入学习Java和进行高级Java编程至关重要。

    java虚拟机工作原理详解

    类加载器遵循**委托模型(Delegation Mode)**,即从顶层的引导类加载器开始,逐级向下委托加载任务,直到找到对应的类。如果父加载器找不到所需类,子加载器才会尝试加载。这种机制确保了类的唯一性,防止同一个类...

    JVM(java虚拟机)

    Java中的类必须被装载到JVM中才能运行,这一过程由JVM中的类装载器(Class Loader)完成。类装载器的主要职责是从文件系统或网络中读取类文件,将其转换为JVM可识别的字节码格式,并将其加载到内存中,进而创建类的...

    JVM加载class文件的原理机制

    在这里,Java采用了委托模型机制,这个机制简单来讲,就是“类装载器有载入类的需求时,会先请示其Parent使用其搜索路径帮忙载入,如果Parent找不到,那么才由自己依照自己的搜索路径搜索类”。 类加载过程 类加载...

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

    类加载器之间的关系遵循双亲委托模型。当一个类加载器接收到加载类的请求时,它首先会委托父类加载器尝试加载,只有当父类加载器无法加载时,当前类加载器才会尝试自己加载。这样设计的目的是保证Java核心类库的稳定...

Global site tag (gtag.js) - Google Analytics