• 类加载器和双亲委派机制


    核心:如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,最终将到达顶层的启动类加载器 

    1.类加载到底是什么:将字节码文件(二进制文件)读入到内存中,并将其放到方法区内,然后再在堆区中创建相应的Class类的对象(这个Class类对象就是类加载的最终产品)

    类加载过程:

    (1)加载:读入字节码文件

    (2)链接(验证,准备,解析)

    (3)初始化(静态变量初始为指定值,执行静态代码块)

    (4)使用

    (5)卸载

    2.类加载器的种类:

    启动类加载器(也叫根加载器) Bootstrap ClassLoader,没有父类

    扩展类加载器  Extension ClassLoader,父类加载器为启动类加载器

    应用程序类加载器  Application ClassLoader,父类加载器为ExtClassLoader

    自定义类加载器 通过继承ClassLoader实现,一般是加载我们的自定义类父类加载器为AppClassLoader

    3.双亲委派机制

    总结:就是先让父加载器去加载,父加载器加载不了再自己来加载

    如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,最终将到达顶层的启动类加载器

    如果父类加载器可以完成类加载任务,就有父类加载器来完成加载,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载

    每个儿子都很懒,每次有活就丢给父亲去干,直到父亲说这件事我也干不了时,儿子自己想办法去完成

    通过这种层级关可以避免类的重复加载,当父亲已经加载了该类时,就没有必要子ClassLoader再加载一次

  • 相关阅读:
    CMake Cookbook by Eric
    Ceph入门到精通-Nginx 大量请求 延迟优化
    MySQL数据库维护管理与备份实战
    JenKins使用(Linux)
    文举论金:黄金原油全面走势分析策略指导。
    SW2303 Type-C 口/Type-A 口快充协议芯片 支持多种快充协议
    黑马JVM总结(三十七)
    基于Python+Pygame实现一个俄罗斯方块小游戏【完整代码】
    c语言中你经常遗忘的知识点汇总
    NineData:高效、安全、可靠的DB2数据管理平台
  • 原文地址:https://blog.csdn.net/weixin_47414034/article/details/126529022