三种类加载器以及双亲委派机制

四种类加载器以及双亲委派机制

引导类加载器(bootstrap class loader)用来加载Java的核心库(JAVA_HOME/jre/lib/rt.jar),使用原生代码写的,并不是继java.lang.ClassLoader

扩展类加载器(extensions class loader)用来加载Java的扩展库(JAVA_HOME/jre/ext/*.jar),Java虚拟机的实现会提供一个扩展库目录,该类加载器在此目录里面查找并加载Java类

应用程序类加载器(application class loader),一般来说Java应用的类都是由它来完成加载的

自定义类加载器,通过继java.lang.ClassLoader类的方式实现自己的类加载器
扩展类加载器,应用程序类加载器和自定义类加载器都是用Java来实现的,都继承自java.lang.ClassLoader,而引导类加载器底层是使用c或者c++实现的

双亲委派机制(代理模式):
某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次追溯,直到最高的父类,如果父类加载器可以完成类加载任务,就成功返回;如果父类无法完成此加载任务时,才自己去加载
双亲委派机制是为了保证Java核心库的类型安全,这种机制就保证了不会出现用户自己能定义java.lang.String类的情况,也并不是所有的类加载器都采用双亲委派机制,例如tomcat服务器类加载器也使用了代理模式,它会首先尝试自己去加载某个类,如果找不到再代理给父类加载器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值