对象的创建
不包括数组和Class对象
对象的内存布局
- 对象在内存中存储的布局分为3块:对象头(Header)、实例数据(Instance Data)、对齐填充(Padding)
- 对象头包括:Mark Word(对象自身的运行时数据)、类型指针(对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例)
- 实例数据是对象真正存储的有效信息。对齐填充仅仅起到占位符的作用。
对象的访问定位
访问方式有:使用句柄、使用直接指针
使用句柄
reference中存储的是对象的句柄地址
好处是reference中存储的是稳定的句柄地址,在对象被移动(垃圾回收时移动对象是普遍的行为)时旨会改变句柄中的实例数据指针,而reference本身不需要修改
使用直接指针
reference存储的直接就是对象地址
好处是速度更快,节省了一次指针定位的时间开销