类加载器家族:启动、扩展、应用类加载器

引言 为什么要学习这个主题? 在上一篇文章中,我们了解了类加载的完整生命周期。但你是否想过: JVM中有多少个类加载器? 为什么要设计多个类加载器? java.lang.String和我们自己写的类是由同一个加载器加载的吗? 理解类加载器的层次结构,就像理解一个组织的部门分工。不同的类加载器负责加载不同来源的类,这种设计既保证了安全性,又提供了灵活性。 你将学到什么? ✅ JVM的三层类加载器体系 ✅ 每个类加载器的职责和加载路径 ✅ 类加载器的父子关系(委派关系) ✅ 如何查看类是由哪个加载器加载的 ✅ 线程上下文类加载器 一、类加载器的层次结构 1.1 三层体系 ┌────────────────────────────────────────┐ │ 启动类加载器 │ Bootstrap ClassLoader │ (Bootstrap ClassLoader) │ C++实现,加载核心类库 │ 加载:rt.jar、核心API │ └──────────────┬─────────────────────────┘ │ 父加载器 ┌──────────────▼─────────────────────────┐ │ 扩展类加载器 │ Extension ClassLoader │ (Extension ClassLoader) │ Java实现,加载扩展库 │ 加载:lib/ext/*.jar │ └──────────────┬─────────────────────────┘ │ 父加载器 ┌──────────────▼─────────────────────────┐ │ 应用类加载器 │ Application ClassLoader │ (Application ClassLoader) │ Java实现,加载应用类 │ 加载:classpath下的类 │ └────────────────────────────────────────┘ │ 父加载器(可自定义) ┌──────────────▼─────────────────────────┐ │ 自定义类加载器 │ User ClassLoader │ (Custom ClassLoader) │ 继承ClassLoader │ 加载:自定义路径的类 │ └────────────────────────────────────────┘ 关键理解: ...

2025-11-20 · maneng

如约数科科技工作室

浙ICP备2025203501号

👀 本站总访问量 ...| 👤 访客数 ...| 📅 今日访问 ...