002 JVM的类加载机制—— JVM的类加载阶段——双亲委派机制

1.10.1 JVM的类加载阶段

JVM的类加载分为5个阶段:加载、验证、准备、解析、初始化。在类初始化完成后可以使用该类的信息,在一个类不再被需要时可以从JVM中卸载。

1.10.3 双亲委派机制

JVM通过双亲委派机制对类进行加载。双亲委派机制指一个类在收到类加载请求后不会尝试自己加载这个类,而是把该类加载请求向上委托给其父类去完成,其父类在接收到该类加载请求后又会将其委派给自己的父类,以此类推,这样所有的类加载器请求都被向上委托给其父类去完成,其父类在接收到该类加载请求后又会将其委派给自己的父类,以此类推,这样所有的类加载请求都被向上委托到启动类加载器中。若父类加载器在接收到类加载请求后发现自己也无法加载该类(通常原因是该类的Class文件在父类加载路径中不存在),则父类会将该信息反馈给子类并向下委派子类加载器加载该类,直到该类被成功加载,若找不到该类,则JVM会抛出ClassNotFound异常.
双亲委派加载机制的类加载流程如下:
(1)将自定义加载器挂载到应用程序类加载器。
(2)应用程序类加载器将类加载委托给扩展类加载器
(3)扩展类加载器将类加载请求委托给启动类加载器
(4)启动类加载器在加载路径下查找并加载Classs文件,如果未找到Class文件,则交由应用扩展类加载器
(5)扩展类加载器在加载路径下查找并加载Class文件,如果未找到Class文件,则交由应用程序类加载器加载
(6)应用程序类加载器在加载路径下查找并加载Class文件,如果未找到目标Class文件,则交由自定义加载器加载
(7)在自定义加载器下查找并加载用户指定目录下的Class文件,如果在自定义加载路径下未能找到目标Class文件,则抛出ClassNotFoundException异常。

双亲委派机制的核心是保障类的唯一性和安全性。

posted @ 2022-10-02 12:09  ╰(‵□′)╯  阅读(12)  评论(0编辑  收藏  举报