类加载器
Java虚拟机的角度只有2种类加载器:Bootstrap class loader和其它所有类加载器。
更细致的划分:Bootstrap class loader, Extension class loader, Application class loader.
Bootstrap class loader
负责加载<JAVA_HOME>\lib目录或者被-Xbootclasspath参数指定的路径存放的类库。
Extension class loader
负责加载<JAVA_HOME>\lib\ext目录或者被java.ext.dirs系统变量所指定的路径存放的类库。
Application class loader
负责加载ClassPath上所有的类库。如果程序中没有自定义过自己的类加载器,这个是程序默认的类加载器
双亲委派模型
双亲委派模型要求除了Bootstrap class loader外,其余所有的类加载器都应有自己的父类加载器。
工作过程:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此。只有当父加载器自己无法完成加载请求,子加载器才会尝试自己去完成加载。
双亲委派的好处
Java中的类随着它的类加载器一起具备了一种带有优先级的层次关系。对于保证java程序的稳定运作极为重要。