类装载器

是什么

我们敲的代码即.java文件经过编译之后得到.class文件,然后这个文件通过JVM的虚拟机加载的到内存中,并形成一个class对象,这个称之为类的加载过程,负责将.class字节码文件加载到内存的工具称之为类加载器。
下面来说说类加载的过程

过程

加载

  • 装载类的第一个阶段
  • 取得类的二进制流
  • 转为方法区数据结构
  • 在java堆中生成对应的java.lang.Class对象

链接

验证

  • 目的:保证class流的格式是正确的
    • 文件格式的验证
      • 是否以0xCAFEBABE开头
      • 版本号是否合理
    • 元格式的验证
      • 是否有父类
      • 基础了final类
      • 非抽象类实现了所有的抽象方法
    • 字节码验证
      • 运行检查
      • 栈数据类型和操作码数据参数吻合
      • 跳转指定指令到合理的位置
    • 符合引用验证
      • 常量池中描述类是否存在
      • 访问的方法或字段是否存在且有足够的权限

准备

  • 分配内存,并为类设置初始值(方法区中)
    JVM-类装载器

解析

  • 符号引用替换为直接引用,class具体运行过程中,才能索引到它要引用的内容
    JVM-类装载器

初始化

  • 执行类构造器
    • static变量 赋值语句
    • static{}语句
  • 子类的调用前保证父类的被调用
  • 是线程安全的

什么是类装载器ClassLoader

  • ClassLoader是一个抽象类
  • ClassLoader的实例将读入java字节码将类装载到jvm中
  • ClassLoader可以定制,满足不同的字节码流获取方式
  • ClassLoader负责类装载过程中的加载阶段

jdk中ClassLoader默认设计模式

JVM-类装载器

相关文章:

  • 2022-02-07
  • 2021-12-27
  • 2021-11-11
  • 2022-01-16
  • 2021-11-24
猜你喜欢
  • 2021-11-11
  • 2021-11-10
  • 2021-09-20
  • 2021-11-27
  • 2021-08-21
  • 2021-08-13
相关资源
相似解决方案