参考:JavaGuid javaguide.cn/java/jvm/me…
1.类加载检查 判断在常量池中定位到这个类的符号符号引用,检查这个符号引用有没有被加载,链接、初始化过。如果没有就执行相应的类加载过程
2.分配内存 通过类加载检查后,在堆中为该对象分配内存空间。 扩展:分配方式有字节指针和空闲列表
3.初始化零值 将分配到的内存空间都初始化为零值。这样对象的实例字段没有赋值的情况下也可以使用
4.设置对象头 对象头里面存储了对象的哈希码,GC年龄,类的元数据信息
5.执行init方法 从虚拟机的角度看,一个新的对象已经产生了。但是从java虚拟机的角度上看,对象才刚刚开始,需要执行对象的构造方法进行初始化,一个对象才算真真正正的创建出来。