JVM学习笔记8

81 阅读1分钟

类加载器

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程序的稳定运作极为重要。