您的位置:首页 > 编程语言 > Java开发

Java - 双亲委派模型

2018-01-30 14:54 295 查看


类加载器

Java 中的类加载器主要用于实现类的加载,Java 中的类和类加载器一起确定类在JVM 中的唯一性

启动类加载器:

C++ 实现,是JVM 的一部分,其他加载器都是Java 实现,并且独立于JVM。Bootstrap ClassLoader 主要负责加载<Java_Home>/lib 或者被-xbootclasspath 参数指定的路径中的类库。应用程序不能直接使用该加载器。

扩展类加载器:

Extension ClassLoader 负责加载<Java_Home>/lib/ext  下的类或者Java.ext.dirs 指定的路径下的类库,开发者可以直接使用该加载器。

应用程序类加载器

Application ClassLoader 负责加载用户指定的路径,即Class_Path 下的类库。如果App 没有自定义类加载器,默认使用该加载器。

双亲委派模型

功能:

要求除了顶层的启动类加载器以外,其他加载器必须有属于自己的父类加载,使用组合关系来服用父类加载器。

过程:

当用户需要加载器时,首先不会自己去加载这个类,而是首先调用父类加载器,将请求委派给父类加载器,每一层都是如此。因此所有的加载最终都会送达顶层的启动类加载器。只有当父类加载器反馈不能加载时,才会将加载的任务给到子加载器。

优点:

使得Java 类伴随着他的类加载器一起有了层次关系网(优先级)。以Object 类为例,任何加载Object 的请求都会到达启动类加载器,使得Object 类在各种类加载器中都是一个类,以免出现混乱。保证Java 程序的稳定性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: