对象创建过程
1.检查类是否存在
2.为对象分配内存空间
3.为分配的内存空间分配零值
4.给对象设置其他-
5.执行构造函数
1.检查类是否存在
当虚拟机执行new关键字时,首先去运行时的常量池去 查找对象引用指向的对象是否被虚拟机加载
,如果没有加载,进行类的加载过程、解析和初始化。如果加载,进行下一步操作。
2.为对象分配内存空间
当类元信息被加载
之后,我们就可以从常量池找到对应的类元信息,通过类元信息来确定类型和后面需要申请的内存大小。
3.为分配的内存空间分配零值
对象的内存分配完成后,还需要将对象的内存空间都初始化为零值,这样能保证对象即使没有赋初值,也可以直接使用
4.给对象设置其他
分配完内存空间,初始化零值之后,虚拟机还需要对对象进行其他必要的设置,设置的地方都在对象头中,包括这个对象所属的类,类的元数据信息,对象的hashcode,GC分代年龄等信息。
5.执行构造函数
然后执行对象内部生成的init方法,初始化成员变量值,同时执行搜集到的{}代码块逻辑,最后执行对象构造方法。执行对象的构造方法,这里做的操作才是程序员真正想做的操作,例如初始化其他对象啊等等操作,至此,对象创建成功。