【JVM之五】双亲委派模型

昨天突然想到了一个点,这个双亲委派模型的意义是什么呀 ?如果说没有这个模型会变的怎么样?

双亲委派模型 有几类 类加载器 :

启动类加载器(Bootstrap classloader)、扩展类加载器(Extension classloader)  、 应用程序类加载器(Application classloader)

还有的就是 自定义类加载器啦。 他们之间的关系如下图。 上下的关系是组合的关系。

 

 

 

 

我们要new一个类,要看看这个模板(class对象)加载进内存了没有,如果没有的话,那就用类加载器 把 类的模板加载进来,然而====随便加载是不行的。这个规则就是,子 类加载看看先把这个类 交给上一级 类加载器,看看能不能加载,如果能的话,就上一级加载器加载这个类,上一级是在不能加载的,自己加载就可以。

为什么饶了这么一大圈 一套套的进去,看看 上一级 加载器能不能加载这个类,弄不好还要自己加载 呢?

这个看似**的流程其实保证个java底层环境保持一致的基础。

举个例子:我们都知道Object 是所有的 类父类。 我们看看这个语句 boolean b = Object.isAssignableFrom(A类);

这个语句是问A类是不是Object的子类或者子接口。答案肯定是true的!毫无疑问!

然而,如果没有双亲委派模型的话,所有的自定义的类加载器都可以随便加载所有的类 ,那会发生什么情况?

我现在定义了 一个类Object,巧了 ,刚刚 跟 万类之父 Object的名字 起的一样了,然后还被 自定义的加载器 加载进来了,生成了一个模板!!  然后我们  在看上面的那一条语句 还成立么? boolean b = Object.isAssignableFrom(A类);显然返回一个false。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值