`

双亲委派模型

 
阅读更多

双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子类加载器才会尝试自己去加载。

 protected Class<?> loadClass(String name, boolean resolve)
        throws ClassNotFoundException
    {
        synchronized (getClassLoadingLock(name)) {
            // First, check if the class has already been loaded
            Class<?> c = findLoadedClass(name);
            if (c == null) {
                long t0 = System.nanoTime();
                try {
                    if (parent != null) {
                        c = parent.loadClass(name, false);
                    } else {
                        c = findBootstrapClassOrNull(name);
                    }
                } catch (ClassNotFoundException e) {
                    // ClassNotFoundException thrown if class not found
                    // from the non-null parent class loader
                }

                if (c == null) {
                    // If still not found, then invoke findClass in order
                    // to find the class.
                    long t1 = System.nanoTime();
                    c = findClass(name);

                    // this is the defining class loader; record the stats
                    sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
                    sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
                    sun.misc.PerfCounter.getFindClasses().increment();
                }
            }
            if (resolve) {
                resolveClass(c);
            }
            return c;
        }
    }

 双亲委托遭到了三次重大破坏


 

分享到:
评论

相关推荐

    Java虚拟机类加载机制及双亲委派模型

    Java虚拟机类加载机制及双亲委派模型

    jvm 类加载机制 双亲委派模型

    jvm 类加载机制 双亲委派模型 文档 jvm 类加载机制 双亲委派模型 文档

    第23讲请介绍类加载过程,什么是双亲委派模型1

    这里可进一步细分为三个步骤:极客时间 | Java核心技术36讲验证(Verification),这是虚拟机安全的重要保障,JVM 需要核验字节信息是符合 Ja

    JVM的类加载过程以及双亲委派模型详解

    主要介绍了JVM的类加载过程以及双亲委派模型详解,类加载器就是根据指定全限定名称将 class 文件加载到 JVM 内存,然后再转化为 class 对象。,需要的朋友可以参考下

    类加载器和双亲委派模型加载类、类的加载优先级的详解.docx

    类的生命周期包含了如上的7个阶段,其中 验证 、 准备 、 解析 统称为 连接,类的加载主要是前五个阶段,每个阶段基本上保持如上顺序 开始(仅仅是开始,实际上执行是交叉混合的),只有 解析 阶段不一定...

    javakam#AndoJavaKotlin#类加载器及双亲委派1

    类加载器及双亲委派双亲委派模型的整个工作流程非常的简单,如下所示:如果一个类加载器收到了加载类的请求,它不会自己立即去加载类,它会先去请求父类加载器,每个层次的

    细说Tomcat如何打破双亲委派(有源码和图)

    NULL 博文链接:https://flyfoxs.iteye.com/blog/2114149

    《剑指offer》JVM面试题总结.pdf

    JVM 面试题总结 JVM 的主要作用是什么? 请你描述一下 Java 的内存区域? 请你描述一下 Java 中的类加载机制? 加载 验证 准备 ...什么是双亲委派模型? 双亲委派模型的缺陷? 双亲委派机制的三次破坏

    【JVM】类加载器与双亲委派模型

    类加载器在加载阶段,会将class文件加载进方法区。有关类加载的全过程,可以先参考我的另外一篇文章类的奇幻漂流——类加载机制探秘 类加载器的类型 类加载器有以下种类: 启动类加载器(Bootstrap ClassLoader) ...

    Java面试突击版1

    介绍下类件结构吧!2.4.14 类加载过程知道类加载的过程吗?那加载这步做了什么?知道哪些类加载器?双亲委派模型知道吗?能介绍下吗?双亲委派模型介绍双亲委派模型

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 189 7.4.1 类与类加载器 / 189 7.4.2 双亲委派模型 / 191 7.4.3 破坏双亲委派模型 / 194 7.5 本章小结 / 197 第8章 虚拟机字节码执行引擎 / 198 8.1 概述 / 198 8.2 运行时栈帧结构 / 199 8.2.1 局部变量...

    涵盖了90%以上的面试题

    双亲委派模型 为什么要自定义类加载器 如何自定义类加载器 什么是GC 内存泄漏和内存溢出 Java的内存模型(JVM的内存划分) JVM内存模型1.7和1.8的区别 如何判断一个对象是否是垃圾对象 垃圾回收算法 Minor GC和Full GC...

    Java类加载机制.pdf

    java的类加载机制,类加载顺序,类加载的体系结构,类加载过程,双亲委派模型及机制等相关内容。做架构师或者高级开发,类加载是必须要掌握的内容。

    java类加载机制.xmind

    该文件是JVM中关于类加载机制的知识整理的思维导图,包括类加载机制概述、类加载的生命周期、加载时机、加载过程、类加载、类的初始化和实例化等几个大...包括双亲委派机制,违背双亲委派模型,开发自己的类加载器等等

    Java虚拟机

    7.4.3 破坏双亲委派模型 7.5 本章小结 第8章 虚拟机字节码执行引擎 8.1 概述 8.2 运行时栈帧结构 8.2.1 局部变量表 8.2.2 操作数栈 8.2.3 动态连接 8.2.4 方法返回地址 8.2.5 附加信息 8.3 方法调用 ...

    java虚拟机、进程周期,类加载1器和类使用要点简述

    类加载器 (类加载器使用双亲委派模型,为的是避免类的重复加载) 1、Java虚拟机与进程的生命周期 2、类的加载、连接与初始化 3、Java程序对类的使用可以分为两种:

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    第94节双亲委派模型00:17:03分钟 | 第95节运行时栈帧结构00:08:46分钟 | 第96节局部变量表00:20:48分钟 | 第97节操作数栈00:08:36分钟 | 第98节动态连接00:02:56分钟 | 第99节方法返回地址和附加信息00:03:24...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    8.1.2 类装载器与双亲委派模型 8.1.3 常量池解析 8.1.4 解析constant_class_info入口 8.1.5 解析constant_fieldref_info入口 s.1.6 解析constant_methodref_info入口 8.1.7 解析constant_interface...

    深入java虚拟机第二版

    8.1.2 类装载器与双亲委派模型 8.1.3 常量池解析 8.1.4 解析CONSTANT_Class_info入口 8.1.5 解析CONSTANT_Fieldref_info 入口 S.1.6 解析CONSTANT_Methodref_info 入口 8.1.7 解析CONSTANT_Interface- ...

    深入Java虚拟机

    8.1.2 类装载器与双亲委派模型 8.1.3 常量池解析 8.1.4 解析CONSTANT_Class_info入口 8.1.5 解析CONSTANT_Fieldref_info 入口 S.1.6 解析CONSTANT_Methodref_info 入口 8.1.7 解析CONSTANT_...

Global site tag (gtag.js) - Google Analytics