类加载的过程

43 阅读1分钟
graph TD
加载 --> 验证 --> 准备 --> 解析 --> 初始化
  1. 加载:通过类的全限定名,查找类的二进制字节流(.class文件),将其静态存储结构转换为方法区的运行时数据结构,并生成一个Class对象(作为方法区访问入口)

  2. 验证:确保字节码符合JVM规范,防止恶意代码破坏JVM

  3. 准备:为类变量(静态变量)分配内存(并赋值,主要侧重在内存分配上)

    注意:被final修饰的static字段不会赋值,因为他在编译期就分配了

  4. 解析:将常量池内的符号引用(字面量)替换为直接引用(内存地址偏移量、指针等)

  5. 初始化:执行类构造器方法(编译器自动生成),为类变量赋实际值,执行静态代码块。