测试对象实例化的过程
* ① 加载类元信息 - ② 为对象分配内存 - ③ 处理并发问题 - ④ 属性的默认初始化(零值初始化)
* - ⑤ 设置对象头的信息 - ⑥ 属性的显式初始化、代码块中初始化、构造器中初始化
对象头 实例数据 对齐填充
运行时元数据:1.哈希值(堆空间的地址) 2.GC分代年龄 3.锁状态标志 4.
线程持有锁 5.偏向线程ID 6.偏向时间戳
句柄引用的好处:如果对象地址改变(垃圾回收的时候复制算法和标记整理都有可能让对象地址发生改变)
这个时候 java栈中的reference不需要改变 只需要该变句柄中的指针就可以了
缺点:需要额外开辟句柄池 浪费空间 查找对象链路变长 费时
Hotspot虚拟机采用的是直接指针 缺点就是对象地址改变 要修改栈中reference的地址