类加载器

一、ClassLoader类加载器:
1.类加载:通过一个类的全名称来获取此类的二进制字节流
2.类加载器:实现类加载功能的代码模块
3.相关方法:

  • getClassLoader():获取这个类的类加载器
  • getClassLoader().getParent():获取这个类的父加载器

二、JDK内置的三大类加载器:
1.BootStrap(启动类加载器):

  • 使用C++语言实现,是JVM自身的一部分,独立于JVM外部,并且无法被Java程序直接引用
  • 负责将存放于JAVA_HOME\lib目录下的能被JVM识别的所有类库加载到JVM中(rt.jar->java基础类库)

2.ExtClassLoader(扩展类加载器):

  • 使用Java语言实现,可以被Java程序直接引用
  • 负责将存放于JAVA_HOME\lib\ext(xml文件解析类,界面框架类)目录下的所有能被JVM识别的类库

3.AppClassLoader(应用程序类加载器):

  • 使用Java程序实现,如果用户没有自定义类加载器,则是程序中默认的类加载器
  • 负责加载用户classPath上指定的类库

三、类加载器的双亲委派模型:
1.定义:四种类加载器的层次关系称为类加载器的双亲委派模型
2.工作流程:
在这里插入图片描述
如果一个类加载器收到了类加载请求,首先自己不会去尝试加载此类,而是将类加载请求委托给父类加载器完成,每一层的类加载器都是如此。只有当父加载器无法加载此类时,子类加载器才会尝试自己去加载。
3.存在意义:保证Java程序的稳定运行
4.比较两个类相等的前提:必须是同一个类加载器加载的前提下才有意义。否则,即使两个类来源于同一个Class文件,被同一个虚拟机加载,只要加载他们的类加载器不同,那么这两个类不相等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值