【235、类加载】

28 阅读2分钟

类的加载是指将Java类的二进制数据读入内存,并为之创建一个Class对象的过程。在Java程序运行时,当需要使用某个类时,JVM会先检查该类是否已经被加载,如果没有,则会执行类加载过程。

Java虚拟机(JVM)使用了一种分层次的类加载器体系,类加载器分为三层:启动类加载器、扩展类加载器和应用程序类加载器。每个类加载器都有一个父类加载器,除了启动类加载器,它没有父类加载器。

类的加载过程分为以下三个步骤:

  1. 加载:查找并加载类的二进制数据,通常来自.class文件,也可以是其他形式的数据源。

  2. 链接:将类的二进制数据合并到JVM中,包括验证、准备和解析这三个阶段。

    (1) 验证:检查加载的类是否符合JVM规范,如字节码格式是否正确,是否有安全问题等。

    (2) 准备:为类的静态变量分配内存,并初始化为默认值。

    (3) 解析:将符号引用替换为直接引用,使得类可以被正确链接。

  3. 初始化:执行类的初始化操作,包括执行静态代码块和变量初始化等。

类的加载是一个动态的过程,即当程序运行过程中需要使用某个类时,才会进行加载。在Java程序中,可以使用Class.forName()方法或ClassLoader类的loadClass()方法来手动加载类,也可以通过JVM自动加载。在实际应用中,了解类的加载机制和过程对于理解Java程序的运行原理和调优都非常有帮助。