1.检查是否加载过
虚拟机解析new指令,首先检查常量池是否有类的符号引用,并且检查是否已经加载解析和初始化,没
有就执行类加载过程
2.分配内存
虚拟机在java堆中分配空间。如果内存是规整的,虚拟机通过“指针碰撞”分配内存、如果内存不规整
的,虚拟机维护一个内存块使用情况表,通过“空闲列表”分配内存。
3.初始化
内存空间初始化为零值。这也是有些对象不赋值就可以使用的原因。
4.设置对象头
在对象的对象头中设置:对象是哪个类的实例,如何找到类的元数据信息、对象的哈希码、对象的Gc分
带年龄等信息。
5.执行init指令
以上4步一个新的对象已经产生,但是所有的字段都是零。接着字节码解析器调用init指令,这个对象才
算完全产生出来。