1、加载
通过类的全限定名找到类的.class字节码文件,加载到方法区中。
创建java.lang.Class对象,这个对象是C++Klass的mirror,用来表示这个类在JVM中的表示。
2、链接
链接是将类的二进制数据合并到JVM中,确保类的正确性和可用性
(1)验证:确保类的字节码符合JVM规范,比如magic number:cafe babe
(2)准备:为类的静态变量分配内存(并不进行初始化赋值),静态变量此时赋默认值。
(3)解析,将符号引用转为直接引用(如果A类的常量池中有B类的引用,要解析A类,必然对B类进行了类加载)
3、初始化
执行静态代码块、静态变量赋值、初始化方法。
4、使用
5、卸载