当前位置:首页 > java > 正文

java一个类是什么时候被加载

  • java
  • 2024-04-29 23:46:04
  • 7338

Java 虚拟机 (JVM) 在将类加载到内存中之前,会经历以下阶段:
加载
JVM 根据类的全限定名找到相应的 .class 文件。
JVM 将 .class 文件的内容读取到内存中。
JVM 验证 .class 文件的结构和格式是否合法。
验证
JVM 验证 .class 文件的内容是否符合 Java 语言规范和安全规则。
例如,JVM 会检查类是否继承了允许的父类,是否存在循环依赖性。
准备
JVM 为类的静态变量分配内存空间并将其初始化为默认值。
JVM 设置类的访问权限和元数据。
分解
JVM 将类的符号引用(如超类、接口和方法)转换为直接引用。
这是为了提高类在运行时的性能。
初始化
JVM 执行类的静态初始化器(如果存在)。
这些静态初始化器通常用于初始化类的常量和静态变量。
类加载的时机
一个类何时被加载取决于以下因素:
直接引用:当创建该类的实例时。
静态引用:当访问类的静态变量或方法时。
子类化:当继承该类的子类被加载时。
实现接口:当实现该接口的类被加载时。
反射:当使用反射 API 动态加载类时。
类加载器:当自定义类加载器加载类时。
延迟加载
为了提高性能,JVM 可以采用延迟加载机制,这意味着只有在需要时才加载类。 这可以节省内存和启动时间。