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


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

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

    类加载过程:

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

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

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

    (4)使用

    (5)卸载

    2.类加载器的种类:

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

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

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

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

    3.双亲委派机制

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

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

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

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

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

  • 相关阅读:
    [附源码]java毕业设计游戏装备交易网站论文2022
    Linux常见指令:从基础到理论
    前端如何mock数据
    微信小程序传参的五种方式
    idea如何更改编辑器字体大小和框字体大小
    世界杯球队分析
    1084. 销售分析III
    如何在 Endless OS 上安装 ONLYOFFICE 桌面编辑器 7.5
    Pipeline知识小记
    mongodb 安装
  • 原文地址:https://blog.csdn.net/weixin_47414034/article/details/126529022