1、对象的实例化

大厂面试题

美团:
对象在JVM中是怎么存储的?

对象头信息里面有哪些东西?
蚂蚁金服:
二面:java对象头里有什么

JVM第十章_对象的实例化内存布局与访问定位

以下为,上述脑图结点的解释:

JVM第十章_对象的实例化内存布局与访问定位

JVM第十章_对象的实例化内存布局与访问定位

JVM第十章_对象的实例化内存布局与访问定位

JVM第十章_对象的实例化内存布局与访问定位

JVM第十章_对象的实例化内存布局与访问定位

JVM第十章_对象的实例化内存布局与访问定位

JVM第十章_对象的实例化内存布局与访问定位

对象实例化的过程:

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

对象的属性赋值的操作:

1、属性的默认初始化 2、显示初始化/(3、代码块中初始化) 4、构造器初始化

2、对象的内存布局

JVM第十章_对象的实例化内存布局与访问定位

JVM第十章_对象的实例化内存布局与访问定位

JVM第十章_对象的实例化内存布局与访问定位

3、对象的定位访问

JVM第十章_对象的实例化内存布局与访问定位

JVM第十章_对象的实例化内存布局与访问定位

JVM是如何通过栈帧中的对象引用访问到其内部的对象实例的呢

JVM第十章_对象的实例化内存布局与访问定位

句柄访问

好处:

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

JVM第十章_对象的实例化内存布局与访问定位

直接指针

好处:

JVM第十章_对象的实例化内存布局与访问定位

相关文章: