༺歲月蹉跎༻

只要路是对的,就不怕路远!

0%

Java对象内存布局和对象头

10、Java对象内存布局和对象头

10.1 先从阿里及其它大厂面试题说起

1654782196790

10.2 周志明老师JVM第3版

1654782219574

10.3 对象在堆内存中的存储布局

1654782232880

1654782236693

10.4 对象标记Mark Word保存什么

1654782263989

1654782269197

1654782274759

1654782279264

10.5 参考尚硅谷宋红康老师原图

1654782293446

10.6 Hotspot术语表官网

http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html

1654782311517

10.7 底层源码理论证明

http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/89fb452b3688/src/share/vm/oops/oop.hpp

1654782350783

  • _mark字段是mark word,_metadata是类指针klass pointer,对象头(object header)即是由这两个字段组成,这些术语可以参考Hotspot术语表。

1654782391402

10.8 32位(看一下即可,不用学了,以64位为准)

1654782419058

10.9 64位重要

1654782440752

1654782444879

10.9.1 oop.hpp

1654782459634

10.9.2 markOop.hpp

1654782478275

1654782481640

10.9.3 markword(64位)分布图,对象布局、GC回收和后面的锁升级就是对象标记MarkWord里面标志位的变化

1654782499908

10.10 JOL POM

1
2
3
4
5
6
7
8
9
<!--
官网:http://openjdk.java.net/projects/code-tools/jol/
定位:分析对象在JVM的大小和分布
-->
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.9</version>
</dependency>

10.11 JOL 小试一下

1654782563814

10.12 默认开启压缩说明

1654782582125

10.12.1 结果

1654782607113

10.13 手动关闭压缩再看看结果

1654782636008

10.14 换成其他对象试试结果

1654782666472