Java创建对象的过程
1.类加载检查
虚拟机遇到一条new指令时执行类加载检查
2.分配内存
在类加载检查通过后,为新生对象分配内存
分配内存两种方式:2.1.指针碰撞:用过的内存内存和没用过的内存分开,中间有一个分界指针,分配内存时分界指针向没用过的内存一方移动
2.2.空闲列表:虚拟机维护一个列表,列表记录哪些内存是可用的,分配时找一块内存给对象实例,更新列表记录
分配内存时线程安全:CAS+失败重试;TLAB
3.初始化零值
在内存分配完成后,虚拟机将分配到的内存空间初始化为零值
4.设置对象头
在初始化零值后,虚拟机对对象进行初始化设置;例如该对象属于哪个类的实例,必要信息存放在对象头中
5.执行init方法
以上所有工作完成后,执行init方法,对象创建完成