java对象结构包含哪几部分:
对象头 + 实例数据 + 对齐填充
对象头又由:mark work + class point 组成
mark work:占8byte = 64位
class point:占4byte = 32位
具体请看图片:https://i-blog.csdnimg.cn/blog_migrate/8c477ad05e2b7adddc20cf71a50c9aa7.png
开发工具(我用的时idea)中查询对象结构:
引入 jol 包:
maven依赖:
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.10</version>
</dependency>
代码实例:
public static void main(String[] args) {
System.out.println("----hashcode before");
System.out.println(ClassLayout.parseInstance(a).toPrintable());
//转化成16进制,方便比较
System.out.println(Integer.toHexString(a.hashCode()));
System.out.println("----hashcode after");
//计算完hashcode之后的a对象的布局
System.out.println(ClassLayout.parseInstance(a).toPrintable());
}
控制台结果:
内容解析: