4. 类的加载器和双亲委派模式

  1. Bootstrap ClassLoader 
    1. 加载$JAVA_HOME中jre/lib/rt.jar 里所有的class或Xbootclassoath选项指定的jar包
  2. Extension ClassLoader
    1. 加载java平台中扩展功能的一些jar包、包括$JAVA_HOME中jre/lib/*.jar 或 -Djava.ext.dirs指定目录下的jar
  3. App ClassLoader 
    1. 加载classpath中指定的jar包及-Djava.class.path所指定的目录下的类和jar包
  4. Custom ClassLoader 
    1. 通过java.lang.ClassLoader的子类自定义加载class 属于应用程序根据自身需要自定义的ClassLoader 如tomcat 、jboss都会根据j2ee 规范自行实现ClassLoader

相对于类加载的其他阶段而言,加载阶段(准确地说,是加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,因为开发人员既可以使用系统提供的类加载器来完成加载,也可以自定义自己的类加载器来完成加载。

双亲委派

定义:如果一个类加载器在接到加载类的请求时,它首先不会自己尝试去加载这个类,而是把
这个请求任务委托给父类加载器去完成,依次递归,如果父类加载器可以完成类加载任务,就
成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。
优势:Java类随着加载它的类加载器一起具备了一种带有优先级的层次关系。比如,Java中的
Object类,它存放在rt.jar之中,无论哪一个类加载器要加载这个类,最终都是委派给处于模型
最顶端的启动类加载器进行加载,因此Object在各种类加载环境中都是同一个类。如果不采用
双亲委派模型,那么由各个类加载器自己取加载的话,那么系统中会存在多种不同的Object
类。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值