`

双亲委派模型

 
阅读更多

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

 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虚拟机类加载机制及双亲委派模型

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

    双亲委派模型是类加载机制的核心,它规定当类加载器尝试加载某个类型时,除非父加载器找不到该类型,否则任务会被委托给父加载器。这样可以避免类的重复加载,确保所有类都有统一的加载源,从而维护系统的一致性和...

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

    ### JVM 类加载机制与双亲委派模型 #### 一、概述 JVM(Java Virtual Machine,Java虚拟机)中的类加载机制是一项重要的基础技术,它不仅涉及到了类的加载过程,还涉及到类如何被正确识别及加载的问题。类加载器...

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

    ### 类加载器与双亲委派模型详解 #### 类的生命周期与加载过程 类的生命周期主要包括七个阶段:加载、验证、准备、解析、初始化、使用和卸载。在这七个阶段中,验证、准备和解析统称为连接阶段。类的加载过程主要...

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

    Tomcat作为一款广泛使用的Java应用服务器,其类加载机制有着独特的设计,特别是对Java的双亲委派模型有所突破。本篇文章将深入探讨Tomcat如何打破双亲委派模型,并通过源码分析和图表解析来帮助理解这一机制。 首先...

    Java面试黄金宝典:深入探讨类加载机制、双亲委派模型、JVM调优与内存管理 面试 面经 算法 数据结构

    (3) 破坏双亲委派模型的实际应用;(4) 内存泄露的概念及其防范措施;(5) JVM调优策略及具体实施办法;(6) JVM参数设置指南和推荐的最佳实践;(7) 内存分配与回收策略;(8) Java堆的具体结构和功能介绍。通过这八大...

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

    类加载器按照特定的规则工作,其中最核心的就是双亲委派模型。 类加载器主要有三种类型: 1. 启动类加载器(Bootstrap ClassLoader):这是JVM内核的一部分,由C++实现,不继承自ClassLoader。它负责加载JVM的核心...

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

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

    Java类加载流程(双亲委派)流程图.zip

    首先,我们要明白什么是双亲委派模型。在Java中,每个类都由一个特定的类加载器来负责加载。当一个类加载器收到加载类的请求时,它不会立即加载,而是把这个任务委托给它的父类加载器去完成,直到到达顶层的启动类...

    实例分析JVM安全体系双亲委派命名空间保护域策略Java开

    首先,让我们理解“双亲委派模型”。这是Java类加载机制的一部分,主要目的是维护Java类加载的唯一性,防止不同加载器加载相同的类导致混乱。该模型的工作原理是:当一个类加载器收到加载类的请求时,它不会立即加载...

    S18-ClassLoader类加载流程1

    本文将详细讲解类加载的流程、类加载器的层次结构以及双亲委派模型。 1. **类加载的生命周期** 类的生命周期包括7个阶段:加载、验证、准备、解析、初始化、使用和卸载。 - **加载**:从指定的位置(如类路径、...

    java 详解类加载器的双亲委派及打破双亲委派

    Loader的子类,名为CustomClassLoader,这次我们不仅重写findClass方法,还要重写loadClass方法,以便在加载类时不遵循双亲委派模型。在loadClass方法中,我们首先检查是否已经加载过该类,如果未加载,则调用自己的...

    java安全中的类加载

    Java中的类加载器是以树状结构组织的,自顶向下分为引导类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)和应用类加载器(Application ClassLoader),它们共同遵循双亲委派模型。双亲...

    Java类加载机制.pdf

    类加载机制涉及类加载顺序、类加载器的体系结构、类加载过程以及双亲委派模型等核心概念。架构师或高级开发人员必须深刻理解这些知识点,以便在进行大型互联网平台架构设计和开发时做出正确的决策。 首先,类加载指...

    译 Java类加载机制(二)

    本篇将深入探讨这一机制的各个方面,包括类加载器、类加载过程以及双亲委派模型。 首先,我们要理解类加载器(ClassLoader)的角色。类加载器是Java虚拟机(JVM)的一部分,负责查找并加载类的字节码。在Java中,...

    类加载器加载过程.rar

    在这个主题中,我们将详细探讨类加载器的加载过程、双亲委派模型以及自定义类加载器。 一、类加载的时机 类加载通常发生在以下几种情况: 1. 当Java程序首次引用某个类时,JVM会触发该类的加载。 2. 当使用反射API...

    jvm基础学习,介绍各种jvm里面的知识点,和深入理解java虚拟机很像,易懂

    类加载过程中采用的双亲委派模型是一种层次结构的类加载器体系结构,它的工作方式如下: 1. 当一个类加载器收到加载类的请求时,它首先尝试让其父类加载器加载该类;如果父类加载器不存在或无法加载,则自行尝试...

    ClassLoader类加载机制和原理详解

    Java的类加载机制遵循“双亲委派模型”(Delegation Model)。当一个类被加载时,它首先会尝试由当前线程的Context ClassLoader进行加载,如果该类加载器无法加载,则向上委托给父类加载器,直至Bootstrap ...

    自定义类加载代码

    本篇将深入探讨自定义类加载器的实现、双亲委派模型以及如何指定父类加载器。 首先,我们来了解自定义类加载器的实现。在Java中,类加载的过程包括加载、验证、准备、解析和初始化。当JVM需要加载一个类时,它会...

Global site tag (gtag.js) - Google Analytics