Java—类加载器(ClassLoader)
Java—类加载器(ClassLoader)
类加载器的加载过程类从被加载到虚拟机内存到被卸载,整个完整的生命周期包括:类加载、校验、准备、解析、初始化、使用和卸载七个阶段。其中验证,准备,解析三个部分统称为连接。接下来我们可以详细了解下类加载的各个过程。
加载:把class字节码文件从各个来源通过类加载器加载到内存中
校验:保证加载进来的字节流符合虚拟机规范
准备:为类变量分配内存,并赋予初始值
解析:将常量池的符号引用替换为直接引用过程
初始化:对类变量初始化java 类加载器,执行类构造器的过程
双亲委托机制

的双亲委派模型中,各个之间的关系是通过组合关系来复用父加载器。当一个收到来类加载的请求,首先把该请求委派该父类处理,当父类无法处理时,才由当前类来处理。对于每个这个方式,也就是父类的优先于子类处理类加载的请求,那么也就是说任何一个请求第一次处理的便是最顶层的 (启动类加载器)。
类加载器的层级查找顺序依次为:启动类加载器,扩展类加载器,系统类加载器。系统类加载器是默认的应用程序类加载器。
启动类加载器,一般由C++实现,是虚拟机的一部分。该类加载器主要职责是将路径下的lib目录中能被虚拟机识别的类库(比如rt.jar)加载到虚拟机内存中。Java程序无法直接引用该类加载器
扩展类加载器java 类加载器,由Java实现java 类加载器,独立于虚拟机的外部。该类加载器主要职责将路径下的libext目录中的所有类库,开发者可直接使用扩展类加载器。 该加载器是由sun.misc.$实现。

应用程序类加载器Java—类加载器(ClassLoader),该加载器是由sun.misc.$实现,该类加载器负责加载用户类路径上所指定的类库。开发者可通过.()方法直接获取,故又称为系统类加载器。当应用程序没有自定义类加载器时,默认采用该类加载器
自定义
每一个都拥有自己独立的类名称空间,类是由将其加载到Java虚拟机中,故类是由加载它的和该类本身一起确定其在Java 运行时环境的唯一性。故只有同一个加载的同一个类,才能算是Java 运行时环境中的相同的两个类。哪怕是来自同一个Class文件Java—类加载器(ClassLoader),即使被同一个虚拟机加载的两个类,只要不同,那么也属于不同的类。对于()、()等方法来判断对象的相等或所属关系都是需要基于同一个。
双亲委派机制的好处:
保证java核心库的安全性(例如:如果用户自己写了一个java.lang.类就会因为双亲委派机制不能被加载,不会破坏原生的类的加载)
主要源码
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » Java—类加载器(ClassLoader)
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

