0
点赞
收藏
分享

微信扫一扫

Java--类加载器

Java类加载器(ClassLoader)是Java虚拟机(JVM)的一个重要组成部分,负责将Java类从.class文件加载到内存中并进行链接、初始化等操作,使得Java程序能够运行。

类加载器的种类及作用

Bootstrap ClassLoader

启动类加载器,是JVM的一部分,用来加载 Java 核心类库,例如 rt.jar 等.

Extension ClassLoader

扩展类加载器,用于加载 Java 扩展类库,例如 jre/lib/ext 目录下的 jar 包

Application ClassLoader

应用程序类加载器,负责加载应用程序 classpath 下的类

自定义类加载器

开发者可以通过继承 ClassLoader 类来实现自定义的类加载器,从而实现一些特定的加载逻辑.

类加载器的本质

类加载器的本质是一个 java 类,继承自 java.lang.ClassLoader,可以通过继承和重写 java.lang.ClassLoader 类的方法来实现自定义的类加载器。 类加载器是 JVM 的一部分,负责将类的字节码文件加载到 JVM 中。 那么它是如何工作的呢?

类加载过程

  1. 加载
  1. 类加载器通过类的全限定名来读取对应的字节码文件,并将字节码转化为JVM中的Class对象.
  1. 链接 --> 链接分为三个阶段,分别是 验证、准备和解析
  1. 验证:验证字节码文件是否符合JVM规范
  2. 准备:为类的静态变量分配内存,并设置默认值
  3. 解析:将符号引用转化为直接引用,例如字段或者方法的符号转化为对应的内存地址
  1. 初始化
  1. 在初始化阶段会执行类的静态代码块,例如初始化静态变量和执行静态方法等
  1. 使用
  1. 在该阶段,类已经被完全加载到JVM中了,并可以进行相应的操作,例如创建对象,调用方法等。

双亲委派机制

Java 类加载器采用双亲委派模型来实现类的加载。即当一个类需要被加载时,先委托给父类加载器进行加载,如果父类加载器无法完成加载任务,则交给子类加载器进行加载。这样可以保证类的唯一性和安全性。

举报

相关推荐

0 条评论