Java一个类的生命周期

分为五个阶段 —> **加载 - 连接 - 初始化 - 使用 - 卸载**

  • 加载
  • 连接
    • 验证
    • 准备
    • 解析
  • 初始化
  • 使用
  • 卸载

    加载

    加载阶段是将Java的文件编译成class文件
    jvm将class文件中的二进制数据读入内存,放入方法区
    将最终创建class对象

    连接

    连接阶段分为三个小阶段:验证 - 准备 - 解析

验证

比如:验证字节码格式是否正确
变量和方法是否有重复
继承和实现是否符合标准

准备

为类的静态变量分配内存,并设置初始值

解析

将接口名,字段名,方法名解析成内存地址,方便调用

初始化

执行静态变量初始化和静态java代码块
并初始化程序员设置的变量值

使用

使用阶段分为直接引用和间接引用

直接引用

会触发类的初始化
比如new一个实例对象,访问和设置静态变量,访问类的静态方法,反射,启动类的入口main方法

间接引用

主要是引用常量,定义数组

卸载

不存在该类的任何实例了,加载该类的对象已经被回收
java.class没有任何被引用,无法在任何地方通过反射访问该类的方法