首页 > 技术文章 > Java对象的实例化

old-cha 2020-07-09 22:33 原文

对象的创建方式

e47d91a3d0b95cbaa105102482a380ad.png

对象的创建步骤

13e68a0f1629fae0be0f57850209a02f.png

以上可以概括为:

  1. 加载类元信息
  2. 为对象分配内存
  3. 处理并发问题
  4. 属性默认初始化(零值初始化)
  5. 设置对象头信息
  6. 属性显示初始化、代码块初始化、构造器初始化

对象的内存布局

298605847264d0a55df353abcb921153.png

图示说明内存布局:
例:有如下代码
26337eb097bff84557c1eb48d9d95e14.png
对应的内存布局如下:
70226bada4c99bf015e89b5f78d761b1.png

对象的访问定位

6c2afc22bd456e45b3f3b65ed2f75fa7.png

句柄访问:

bdcfa00e1fc2ce724a017f6b63741106.png
好处:
reference中存储稳定的句柄地址,对象被移动(垃圾收集时移动对象很普遍)时只会改变句柄中实例数据指针即可,reference本身不需要被修改。

直接指针:

bfe00183079649c7a45707bdc0ca628a.png

推荐阅读