JVM类加载器
加载器从最底层开始往上的顺序
- BootStrap ClassLoader:rt.jar,C++实现,虚拟机的一部分
- Extention ClassLoader: 加载扩展的jar包
- App ClassLoader:指定的classpath下面的jar包
- Custom ClassLoader:自定义的类加载器
双亲委派机制
类收到了加载请求时,它是不会先自己去尝试加载的,而是委派给父类去完成,只有当父类加载器都反馈自己无法完成这个请求(也就是父类加载器都没有找到加载所需的Class)时,子类加载器才会自行尝试加载。
这样做的好处是,加载位于rt.jar包中的类时不管是哪个加载器加载,最终都会委托到BootStrap ClassLoader进行加载,这样保证了使用不同的类加载器得到的都是同一个结果。这也是一个隔离的作用,避免了我们的代码影响了JDK的代码。