对象的创建

1. 类加载检查

  1. 先检查new指令的参数是否可以在常量池对应一个类的符号引用
  2. 检查这个符号引用是否被加载解析和初始化过, 如果没有, 就执行类加载的过程

2. 分配内存

  1. 如何划分内存

  2. 并发情况 (肯定会涉及到内存的争抢)

3. 初始化零值

4. 设置对象头

Untitled

  1. Mark Word 标记字段( 32 位 4字节)

    自身运行时数据, 哈希值, GC分代年龄, 锁状态标志, 线程持有锁, 偏向线程ID, 偏向时间戳

  2. Klass Pointer类型指针 类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。