1、java对象创建的流程步骤?
-
对象创建的流程步骤包括哪些:
-
虚拟机遇到一条new指令时,首先检查这个对应的类能否在常量池中定位到一个类的符号引用
-
判断这个类是否已被加载、解析和初始化
-
为这个新生对象在Java堆中分配内存空间,其中Java堆分配内存空间的方式主要有以下两种
- 指针碰撞
- 分配内存空间包括开辟一块内存和移动指针两个步骤
- 非原子步骤可能出现并发问题,Java虚拟机采用CAS配上失败重试的方式保证更新操作的原子性
- 空闲列表
- 分配内存空间包括开辟分配一块内存和维护修改空闲列表两个步骤
- 非原子步骤可能出现并发问题,Java虚拟机采用CAS配上失败重试的方式保证更新操作的原子性
- 指针碰撞
-
将分配到的内存空间都初始化为零值
-
设置对象头相关数据
- GC分代年龄
- 对象的哈希码 hashCode
- 类的元数据信息
-
执行对象方法
-
-
代码分析对象执行的过程