类加载器

加载动作在JVM外部实现, 以便让应用程序决定如何获取所需的类.
JVM 提供三种类加载器.

启动类加载器 (Bootstrap ClassLoader)

负责加载 JAVA_HOME\lib 目录中的, 或通过-Xbootclasspath 参数指定路径中的, 且被
虚拟机认可(按文件名识别, 如 rt.jar) 的类

扩展类加载器(Extension ClassLoader)

负责加载 JAVA_HOME\lib\ext 目录中的,或通过 java.ext.dirs 系统变量指定路径中的类

应用程序类加载器(Application ClassLoader)

负责加载用户路径(classpath)上的类库


JVM 通过双亲委派模型进行类的加载, 当然我们也可以通过继承 java.lang.ClassLoader
实现自定义的类加载器。

在这里插入图片描述

双亲委派

当一个类收到了类加载的请求, 他首先不会自己去加载这个类, 而是将请求委托给它的父类, 每一层类加载都是如此, 所以所有请求都会到启动类加载器中, 只有父类加载器反馈请求无法完成的时候, 子类加载器才会去尝试加载.

采用双亲委派的一个好处是比如加载位于 rt.jar 包中的类 java.lang.Object,不管是哪个加载
器加载这个类,最终都是委托给顶层的启动类加载器进行加载,这样就保证了使用不同的类加载
器最终得到的都是同样一个 Object 对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值