深入理解双亲委派机制

一、双亲委派机制委派流程

双亲委派机制,就是JVM虚拟机加载类的时候,会优先委派上级类加载器进行类加载。

1、如果上级类加载器能找到这个类,那就由上级类加载器加载,并且对下级共享,反之不共享。

2、如果上级类加载器找不到这个类,那才由下级类加载器加载该类

3、如果下级类加载器也没有找到这个类,就会报错ClassNotFound

 二、双亲委派机制的优势

1、避免类的重复加载当自己程序中定义了一个和Java.lang包同名的类,此时,由于使用的是双亲委派机制,会由启动类加载器去加载JAVA_HOME/lib(java核心类库)中的类,而不是加载用户自定义的类。此时,程序可以正常编译,但是自己定义的类无法被加载运行。

2、保护程序安全,防止核心API被随意篡改。通过委托方式,不会去篡改核心.class,即使篡改也不会去加载,即使加载也不会是同一个.class对象了。不同的加载器加载同一个.class也不是同一个Class对象。这样保证了Class执行安全。

例如:自定义了一个java.lang.String的类,首先会由系统类加载器加载,系统类加载器识别到这个类不属于我加载,因为是JVM系统级别的类,此时应用程序加载器不会加载,会向上委托,直到启动类加载器,启动类加载器识别到这个类属于我来加载,就会去JAVA_HOME下去加载相同包名的String类。加载完成后,即使再有相同包名类名的String类也不会去加载,因为相同包名的类已经被加载过了,就会造成即使开发人员定义了和JVM级别相同包的类也不会去加载自己定义的类,保证了系统级别的类加载安全性,防止核心API被随意篡改。

3、让上级类加载器中的类对下级共享(反之不行),即能让你的类能依赖到 jdk 提供的核心类

4、类加载有次序保证核心类优先加载

三、四种类加载器分别加载哪些类?

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值