JVM的类加载
JVM在运行Java文件的时候,类加载分为5个阶段:加载、验证、准备、解析、初始化。在类初始化加载完成之后,就可以使用这个类的信息了。当这个类不需要使用的时候,就可以从JVM进行卸载。
加载
加载是指JVM读取Class文件的操作,并且根据Class的文件描述创建对应的java.lang.Class对象的过程。我们知道在Java中可以通过Class.forName()的方式进行反射操作。类加载过程中包含将Class文件读取到运行时区域的方法内,并且在堆内存中创建java.lang.Class对象,并封装类在方法区的数据结构的过程。在读取Class文件的时候可以通过文件的形式进行读取,也可以通过jar包或者是war的形式读取,还可以通过动态代理的方式自动生成Class或者通过其他的读取方式进行操作。
验证
主要是为了保证Class文件符合当前虚拟机的要求,保证虚拟机自身的安全,只有通过对应安全机制验证的Class文件才能被JVM顺利加载。
准备
主要的工作是在方法区中为类变量分配内存空间,并且设置类中的变量的初始化操作。初始值是指不同数据类型的默认值,需要注意的是final类型的变量和非final类型的变量在准备阶段的数据初始化过程不同。