代码改变世界

Object o = new Object();

2022-12-05 10:37  杭伟  阅读(72)  评论(0编辑  收藏  举报

对象的创建过程:

1,申请内存,并初始化;

2,构造器初始化;

3,o指向对象。

 

对象在内存中的存储布局:

 

 使用jol工具打印java对象在内存的存储布局:

 

 

其中,对象头的组成:

对象头包括Mark Word和Class Pointer

MarkWord包含三个主要信息: 锁信息,GC,HashCode

 Mark Word = 8byte

Class Pointer = 4byte (经过压缩)

对齐填充 = 4byte

 

所以,Object o = new Object();  在内存中占用16字节。

 

其它引申问题:

DCL与volatile问题

对象怎么定位

**对象如何分配?