美文网首页
JAVA类加载器优先级

JAVA类加载器优先级

作者: ButICare_b72d | 来源:发表于2024-04-02 01:58 被阅读0次

    Java虚拟机(JVM)中的类加载器通常分为以下三个层次,每个层次都有特定的加载责任和优先级:

    Bootstrap ClassLoader(引导类加载器)

    最顶层的加载器,由C/C++代码实现,嵌入在JVM内部,负责加载核心Java API类,比如java.lang.Object等位于rt.jar等核心库中的类。
    它没有父类加载器,处于类加载器层次结构的顶端。
    优先级最高,它首先尝试加载类,如果Bootstrap ClassLoader找不到相应类,则交给其子加载器。
    Extension ClassLoader(扩展类加载器)

    负责加载标准扩展目录<JAVA_HOME>/lib/ext或由java.ext.dirs系统属性所指定目录下的类库。
    它是Bootstrap ClassLoader的子加载器,当Bootstrap ClassLoader不能处理时,请求会传递给Extension ClassLoader。
    Application ClassLoader(系统类加载器/应用程序类加载器)

    也被称为System ClassLoader,负责加载应用程序的类路径(CLASSPATH)上的类。
    它是Extension ClassLoader的子加载器,主要加载用户自定义的类库和应用程序类。
    当Extension ClassLoader无法加载类时,请求进一步向下传递给Application ClassLoader。
    此外,用户还可以自定义类加载器,这些自定义类加载器通常作为Application ClassLoader的子类存在,拥有更低的优先级。

    这三个类加载器之间遵循“双亲委派模型”,即当一个类加载器收到加载类的请求时,它首先将请求转发给父加载器,只有当父加载器无法加载时,子加载器才会尝试自己去加载。这样做的优势在于保证了类的唯一性以及核心Java API的稳定性。

    相关文章

      网友评论

          本文标题:JAVA类加载器优先级

          本文链接:https://www.haomeiwen.com/subject/kcfwtjtx.html