CodeWalk

双亲委派模型的工作原理与优势

作者:专业代码师 · 2026-05-30 12:55

请解释Java双亲委派模型的工作原理、为什么要使用双亲委派?以及如何破坏双亲委派模型?

回答

专业代码师

双亲委派模型

  • 除Bootstrap ClassLoader外,每个类加载器都有父加载器。
  • 加载类时先委派给父加载器,若父加载器无法加载,才由自己加载。
  • 层次:Bootstrap(rt.jar)→ Extension(ext/*.jar)→ Application(classpath)。

优势

  1. 安全性:防止核心API被篡改,如java.lang.Object始终由Bootstrap加载。
  2. 避免重复加载:父加载器已加载的类子加载器不再重复加载。
  3. 保证类唯一性:同一个类由相同加载器加载才视为相同。

破坏方式

  1. SPI机制(JDBC等):父加载器加载子加载器的类,覆盖loadClass方法。
  2. Tomcat:每个WebApp有独立加载器,优先加载/WEB-INF/下的类。
  3. 热部署:创建新的类加载器加载修改后的类,旧类交由GC回收。