类加载器是干什么用的
- 将Class文件加载到JVM中
- 根据父级优先原则,决定这个类有谁加载
- 将Class文件解析为JVM认识的结构
类加载器的种类
BootsrapClassLoader(启动类加载器)使用C++实现的,是虚拟机自身的一部分,其他的类都是由Java语言实现
ExtensionClassLoader(扩展类加载器)
ApplicationClassLoader(应用程序类加载器)如果应用程序没有自定义的类加载器,则此加载器就是程序中默认的类加载器
双亲委派模型
双亲委派模型要求除了顶层的父类加载器外,其他类加载器都要应有自己的父类加载器
双亲委派模型的工作流程:若一个类加载器收到了类加载请求,它不会首先去尝试自己加载这个类,而是委托给父类加载器,每一层都是如此。因此,所有的加载请求都会传到顶层的BootstrapClassLoader类加载器,只有当父加载器反馈无法加载这个类时,子类加载器才会尝试自己加载这个类