阅读量:0
Java类的加载机制是指Java虚拟机(JVM)在运行时,加载和初始化Java类的过程。
Java类的加载过程主要分为三个阶段:
加载(Loading):在加载阶段,JVM根据类的全限定名(即类的包名加上类名)来查找并加载类的字节码文件。具体来说,JVM会根据类加载器(ClassLoader)的层次结构,先尝试使用启动类加载器(Bootstrap ClassLoader)加载类,如果找不到,则由扩展类加载器(Extension ClassLoader)加载类,最后由应用程序类加载器(Application ClassLoader)加载类。如果以上类加载器都找不到类,则会抛出ClassNotFoundException异常。
链接(Linking):在链接阶段,JVM对类的字节码进行验证、准备和解析等操作。
验证(Verification):验证阶段主要是确保类的字节码符合Java虚拟机规范,并且不会损害虚拟机的安全性。
准备(Preparation):准备阶段主要是为类的静态变量分配内存,并设置默认初始值。
解析(Resolution):解析阶段主要是将类、接口、字段和方法的符号引用解析为直接引用。
- 初始化(Initialization):在初始化阶段,JVM执行类的静态变量赋值和静态代码块的代码,以及执行类中定义的静态方法。在这个阶段,JVM会保证多线程环境下的安全性,即只有一个线程能够初始化类,其他线程需要等待。
需要注意的是,类的加载过程是在运行时动态进行的,而不是在编译时静态进行的。这意味着,Java代码中引用的类,在编译时可能还不存在,只有在运行时才会被加载和初始化。