美文网首页
2018-06-08双亲委托

2018-06-08双亲委托

作者: and天神 | 来源:发表于2018-07-04 09:17 被阅读0次

双亲委托。 

我们终于来到了这一步了。 

一个类加载器查找class和resource时,是通过“委托模式”进行的,它首先判断这个class是不是已经加载成功,如果没有的话它并不是自己进行查找,而是先通过父加载器,然后递归下去,直到Bootstrap ClassLoader,如果Bootstrap classloader找到了,直接返回,如果没有找到,则一级一级返回,最后到达自身去查找这些对象。这种机制就叫做双亲委托。 

整个流程可以如下图所示: 

这张图是用时序图画出来的,不过画出来的结果我却自己都觉得不理想。

大家可以看到2根箭头,蓝色的代表类加载器向上委托的方向,如果当前的类加载器没有查询到这个class对象已经加载就请求父加载器(不一定是父类)进行操作,然后以此类推。直到Bootstrap ClassLoader。如果Bootstrap ClassLoader也没有加载过此class实例,那么它就会从它指定的路径中去查找,如果查找成功则返回,如果没有查找成功则交给子类加载器,也就是ExtClassLoader,这样类似操作直到终点,也就是我上图中的红色箭头示例。 

用序列描述一下: 

1. 一个AppClassLoader查找资源时,先看看缓存是否有,缓存有从缓存中获取,否则委托给父加载器。 

2. 递归,重复第1部的操作。 

3. 如果ExtClassLoader也没有加载过,则由Bootstrap ClassLoader出面,它首先查找缓存,如果没有找到的话,就去找自己的规定的路径下,也就是sun.mic.boot.class下面的路径。找到就返回,没有找到,让子加载器自己去找。 

4. Bootstrap ClassLoader如果没有查找成功,则ExtClassLoader自己在java.ext.dirs路径中去查找,查找成功就返回,查找不成功,再向下让子加载器找。 

5. ExtClassLoader查找不成功,AppClassLoader就自己查找,在java.class.path路径下查找。找到就返回。如果没有找到就让子类找,如果没有子类会怎么样?抛出各种异常。

上面的序列,详细说明了双亲委托的加载流程。我们可以发现委托是从下向上,然后具体查找过程却是自上至下。

我说过上面用时序图画的让自己不满意,现在用框图,最原始的方法再画一次。 

上面已经详细介绍了加载过程,但具体为什么是这样加载,我们还需要了解几个个重要的方法loadClass()、findLoadedClass()、findClass()、defineClass()。

重要方法

相关文章

  • 2018-06-08双亲委托

    双亲委托。 我们终于来到了这一步了。 一个类加载器查找class和resource时,是通过“委托模式”进行的,它...

  • 双亲委托机制

    ClassLoader 分类 启动类加载器:BoostrapClassLoader 开发者无法直接获取到启动类加载...

  • 双亲委托模型

    1、双亲委托模型 从java虚拟机角度讲,只存在两种类加载器1、启动类加载器 BootstrapClassLoad...

  • JVM之双亲委托机制

    JVM之双亲委托机制 前言: 想了解双亲委托机制,我们就得先了解他的ClassLoader(类加载)。不管是And...

  • 源码讲解双亲委托如何被破坏

    什么是双亲委托 双亲委托是类加载器的一个特性,当加载一个类的时候,首先会委托父加载器去加载,如果父加载器加载不到,...

  • JVM双亲委托模型

    双亲委派模型工作原理 如果一个类加载器收到类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加...

  • 3.类加载器三双亲委托机制

    双亲委托机制 在双亲委托机制中,各个加载器按照父子关系形成了树形结构,除了根类加载器之外,其余的类加载器都有且只有...

  • 由浅入深谈 Java 的类加载机制

    本文涉及知识点:双亲委托机制、BootstrapClassLoader、ExtClassLoader、AppCla...

  • ClassLoader之双亲委托机制

    一、前言 无论是做Java开发,还是Android开发,ClassLoader是少不了打交道的。即便我们不围绕它做...

  • Android类加载

    双亲委托 某个类加载时,首先委托给parent加载,依次递归,如果parent可以拿到对象则返回,否则由子类获取 ...

网友评论

      本文标题:2018-06-08双亲委托

      本文链接:https://www.haomeiwen.com/subject/xqsasftx.html