JDK-双亲委派模型

1.介绍

1.1 概述

是一种类的加载机制,类加载器之间形成了一种类似加载器链的模型,每个类加载器都有一个父类加载器,形成从下到上的一种继承链,如果所有类的加载器无法加载就会抛出异常(ClassNotFoundException)

1.2 模型图

在这里插入图片描述

2. 加载流程及优点

2.1 流程

·一个类的加载先由启动类加载器进行加载(bootstrap ClassLoader)加载
·当启动类加载器无法加载,交由拓展类加载器进行加载(Extension classLoader)
·当拓展类加载器无法加载交由应用程序类加载器(Application ClassLoader)依次类推
·如果所有类加载器都无法加载就会抛出异常(classNotFoundException)

2.2 优点

·可以保证类的唯一性和安全性,每个类加载器都只能加载自己命名空间内的类
·加载器之间形成一种继承链,可以保证安全性,防止恶意代码注入

3.模型的作用

可以避免重复加载同一个类

举例:比如jdk自带的对应object放在rt.jar中的类,无论使用哪个类加载器加载,最终都会委派给最顶端的启动类加载器(Bootstrap classLoader)进行加载,不同的加载器加载的object类都是同一个,如果没有双亲委派模型,每个类加载器自行去加载的话就会出现重复

注:
1)当不同类加载器加载同一个类时,每个类加载器都会在自己的命名空间中创建一个新的class对象,即便是class字节码相同,也会被认为是不同的类,
2)重复加载同一个类会出现问题,例如类的静态变量和代码快会被多次执行

=============================================
后续追加更新自定义加载器实现demo…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值