双亲委派作用

无论是在学习 Java 过程中还是在背涨薪秘诀时都会提到双亲委派,这里面说的最多的就是类加载机制,但却很少谈及其作用,经多方面参考,总结一下。

关于什么是双亲委派,不知道的小伙伴自行上网去查。

Java 程序启动时,JVM 会创建三个主要的 ClassLoader,它们分别是:

  • 启动类加载器(Bootstrap ClassLoader): 负责加载 Java 核心类库,如 java.lang 包下的类,它是 JVM 内置的,通常由 C++ 实现,不是一个普通的 Java 类。
  • 扩展类加载器(Extension ClassLoader): 负责加载 Java 的扩展库,如 java.util 包下的类。
  • 应用程序类加载器(Application ClassLoader): 也称为系统类加载器,负责加载用户自定义的类和应用程序依赖的类。

JVM 通过双亲委派模型进行类的加载,当然我们也可以通过继承 java.lang.ClassLoader 实现自定义的类加载器。

双亲委派的作用

双亲委派是 Java ClassLoader 的一种加载机制,它的作用是保证 Java 类的加载安全性和避免类的重复加载,同时实现类加载的层级结构。

其作用如下:

  • 保证类的加载安全性: 在加载类时,首先由启动类加载器尝试加载,如果找不到对应的类,再由扩展类加载器尝试加载,如果仍然找不到,则由应用程序类加载器尝试加载。这种从上至下的层级结构保证了核心类库优先被加载,从而保证 Java 类的加载安全性。
  • 避免类的重复加载: 双亲委派机制避免了同一个类被重复加载到不同的 ClassLoader 中。在类加载过程中,如果一个类已经被父 ClassLoader 加载过,子 ClassLoader 就不再尝试重新加载,而直接使用父加载器加载的类。
  • 实现类加载的层级结构: 双亲委派机制建立了类加载的层级结构,每个 ClassLoader 都有一个父加载器,除了启动类加载器,其他的 ClassLoader 都有自己的父加载器。这样形成了一个父子关系的加载链,父加载器可以加载子加载器加载不到的类。

双亲委派机制保证了类加载的安全性和一致性,并避免了类的冲突和重复加载问题。它是 Java ClassLoader 的一个重要特性,为 Java 类的加载提供了一种高效而稳定的机制。

你可能感兴趣的:(Java,双亲委派)