Java JVM何时加载类?

Java JVM何时加载类?,java,memory-management,jvm,classloader,Java,Memory Management,Jvm,Classloader,假设我启动web服务器(或任何其他java进程),所有类(元数据,如类定义)是否会在服务器/进程启动之前加载 它们在系统中的任何位置使用,或在运行时加载,即仅在创建对象或遇到导入语句时加载 这个问题是针对jdk 8和jdk 6的。首先,在字节码中,没有import语句。字节码只是到处使用完全限定的名称 然后,大多数JVM的默认行为是“延迟”加载类。意思是:当您加载类A时,JVM将只加载运行A的所有静态初始化器所需的类 因此,如果A“使用”B和C;然后,只有当JVM执行需要B resp的代码时,才

假设我启动web服务器(或任何其他java进程),所有类(元数据,如类定义)是否会在服务器/进程启动之前加载 它们在系统中的任何位置使用,或在运行时加载,即仅在创建对象或遇到导入语句时加载


这个问题是针对jdk 8和jdk 6的。首先,在字节码中,没有import语句。字节码只是到处使用完全限定的名称

然后,大多数JVM的默认行为是“延迟”加载类。意思是:当您加载类A时,JVM将只加载运行A的所有静态初始化器所需的类

因此,如果A“使用”B和C;然后,只有当JVM执行需要B resp的代码时,才会加载B、C。C待加载

在编写自己的类加载器时,当然可以采用不同的方式

以下是与您的问题相关的行

类加载器的架构使得JVM在启动时不需要 了解有关将在运行时加载的类的任何信息

最初,当JVM启动时,不会向其中加载任何内容。班级 首先加载正在执行的程序的文件,然后加载其他文件 类和接口在 正在执行的字节码

JVM不延迟加载类。 表示直接或间接加载所需的类


请参阅。因此,在引用它们时,它们会在运行时加载。是吗?是的,这是一个正确的说法。