金三银四精选java面试题-能说一下对象的内存布局吗?

发布时间:2023-12-01 09:27:36
 

 能说一下对象的内存布局吗?

在 HotSpot 虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)实例数据(Instance Data)对齐填充(Padding)


对象头主要由两部分组成:

  • 第一部分存储对象自身的运行时数据:锁状态标志哈希码GC 分代年龄线程持有的锁偏向线程 ID偏向时间戳等,官方称它为 Mark Word,它是个动态的结构,随着对象状态变化。
  • 第二部分是类型指针,指向对象的类元数据类型(即对象代表哪个类)。
  • 此外,如果对象是一个 Java 数组,那还应该有一块用于记录数组长度的数据。

实例数据用来存储对象真正的有效信息,也就是我们在程序代码里所定义的各种类型的字段内容,无论是从父类继承的,还是自己定义的。

对齐填充不是必须的,没有特别含义,仅仅起着占位符的作用。


 
上一篇 金三银四精选java面试题-JVM创建对象时,堆会发生抢占吗?
下一篇 金三银四精选java面试题-如何判断对象仍然存活?

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题