对象在内存中的存储布局以及创建一个对象占用多少字节

整个对象在内存中的布局分为三大块:对象头header、实例数据instance data和填充空间padding

在没有实例数据的情况下,对象占用16个字节

Object header :对象头中mark word 占用8个字节,calss pointer 类型指针压缩后占用4个字节

Instance data:实例数据,对象没有成员变量,0个字节

Padding: 补齐4个字节。当CPU在读取内存中的值时,总线宽度被8整除效率最高。前面一共占用了12个字节补齐至16刚好被8整除。

所以 8+4+4=16

 

jvm 默认开启了calss pointer的压缩 以上是开启类型指针压缩状态的对象占用情况

如果没有开启压缩 创建一个对象要占用多少字节呢?

答案也是16个字节

object header中 mark word占用了8个字节,calss pointer 不压缩8个字节,instance data 0字节,8+8=16,可以被8整除,pdding则不需要自动补齐0个字节 总共16个字节。

你可能感兴趣的:(java,jvm)