类加载过程
JVM运行过程:
JVM把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成JVM可以直接使用的Java类型的过程。
加载—>验证—>准备—>解析—>初始化—>使用—>卸载
加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,
在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的访问入口。
链接:将Java类的二进制代码合并到JVM的运行状态之中的过程
验证:确保加载的类信息符合JVM规范
准备:正式为类变量(static变量)分配内存并设置类变量初始值的阶段,
解析:虚拟机常量池内的符号引用替换为直接引用的过程
初始化:
初始化阶段是执行类构造器<clinit>()方法的过程,类构造器<clinit>()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块中的语句合并产生的;
当初始化一个类的时候,如果其父类没初始化,则先初始化其父类;
原文地址:https://www.cnblogs.com/xymchy/p/14780978.html