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