双亲委派模型
类加载是具有层次结构的,也就是父子关系,这种父子关系不是继承,而是通过组合来复用类加载的代码。
Bootstrap 是所有类加载器的父亲。
双亲委派模型的工作过程:
每个类都有缓存,先判断自己的缓存有没有加载的此类,如果没有然后委托父类,父类再查询自己缓存,直到bootstrap ,还是没有,再由当前的类加载器加载,并将其放入它自己的缓存。
这样设计的好处?
主要为了安全性,避免用户自己编写的类动态替换java的一些核心类,同事也避免重复加载,因为jvm中区分不同类,不仅仅是根据类名,相同的class文件被不同的ClassLoader加载就是不同的两个类。