美文网首页
双亲委派模型

双亲委派模型

作者: 四喜汤圆 | 来源:发表于2018-04-08 20:57 被阅读8次

一、为什么要用这种模型

保证相同的字节码文件不被重复加载

二、利用双亲委派模型加载类的过程

摘自参考文献1.png

java.lang.ClassLoader.getClassLoader()代码片段

protected synchronized Class<?> loadClass(String name,boolean resolve){
        // 看自己有没有加载过该类
        Class c=findLoadedClass(name);
        // 未加载过
        if(c==null){
            try{
                // 有父亲:则将请求委派给父亲完成
                if(parent!=null){
                    c=parent.loadClass(name,false);
                }esle{
                    // 没父亲:默认使用启动类加载器作为父加载器
                    c=findBootstrapClassOrNull(name);
                }
            }catch(ClassNotFoundException e){
                // 父类加载器抛出ClassNotFoundException,说明父类加载器无法完成加载请求
            }
            if(c==null){
                // 父类加载器无法加载时:调用自身的findClass()来加载
                c=findClass(name);
            }
        }else{
            // 加载过
            if(resolve){
                resolveClass(c);
            }
        }
        return c;
        
    }

这是一个递归调用过程。
若“某类加载器”收到某个类加载请求

代码逻辑.png

三、JVM中如何判断两个类是相同的

  1. 类名相同
  2. 由同一个类加载器加载

参考文献

1.【深入理解JVM】:类加载器与双亲委派模型

相关文章

  • Tomcat类载入器

    大家都知道,Java的类加载机制是双亲委派模型,那么什么是双亲委派模型呢?我们这里简要的说一下,双亲委派模型...

  • java类加载破坏双亲委派模型

    前面java类加载器与双亲委派模型中提到Java采用个双亲委派的方式来完成类加载,但是双亲委派模型并不是一个强制的...

  • Java 类加载

    双亲委派模型 并非强制 而是推荐 SPI 父类加载器需要子类加载器加载类 打破双亲委派模型 https://www...

  • sandBox源码分析之ClassLoader

    提起classLoader,就不由自主想起了java classLoader的双亲委派模型,那么到底什么是双亲委派...

  • 双亲委派模型

    一、类加载器简介:JVM启动时,会形成由三个类加载器组成的初始类加载器层次结构: Bootstrap ClassL...

  • 双亲委派模型

    一、为什么要用这种模型 保证相同的字节码文件不被重复加载 二、利用双亲委派模型加载类的过程 java.lang.C...

  • 双亲委派模型

    jdk1.2后 虚拟机 的类加载器 使用的就是双亲委派模型; 主要有三种加载器: 1:Bootstrap clas...

  • 双亲委派模型

    类与类加载器 类加载器非常重要,因为每个类加载器都有一个独立的类名称空间。比如我们要加载两个类,如果要比较两个类是...

  • 双亲委派模型

    为何需要双亲委派模型: 如果你自己重写一个String类, 会发生什么?两个字:安全 JVM运行流程, JVM基本...

  • 双亲委派模型

    首先说一说什么是类和类加载器 1.类(Class) 我们在编写代码时,创建的每个“*.java”文件都可以认为是一...

网友评论

      本文标题:双亲委派模型

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