1.加载。
将代码转换成字节流加载进内存。加载完之后创建一个Class对象,这个对象是访问数据的入口。
2.验证。
JVM规范验证和代码逻辑验证。
3.准备
内存分配和初始化。对static修饰的类变量进行内存分配和初始化为0,其他类成员变量到初始化阶段才初始化。
4.解析
针对接口、字段、方法等进行解析,将常量池中的符号引用替换成内存的直接引用。
5.初始化
遇到5种情况会进行初始化:new、反射、继承初始父类、main方法
6.使用
JVM从入口方法执行用户代码。
7.卸载
程序代码执行完之后,JVM销毁创建的Class对象,负责运行的JVM也退出内存。