16 对象的内存布局

vvEcho 2026-03-11 12:27:01
Categories: Tags:

对象的内存布局

java中对象的内存布局分为对象头、实例数据、对齐填充三部分组成;

                                                     对象
                    /                                 |            \
                对象头                              实例数据         对齐填充
                |                                     |               |

1.标记字段(hashcode,锁状态,GC年龄,线程id,时间戳) 存储对象的成员变量 8字节对齐,如果不是8的倍数会填充一些空字节
2.类型指针(指向对象的类元数据,类信息,方法表,字段信息)

一个空对象占多少字节

16字节,因为对象头是8字节,类型指针占8字节,实例数据占0字节,填充字节占0字节

tips:boolean类型对象本身占1字节,但在对象中还需要对象头和填充字节占8字节,所以对象大小为16字节

hotspot字段大小

类型 大小
boolean 1 byte
byte 1 byte
short 2 bytes
char 2 bytes
int 4 bytes
float 4 bytes
long 8 bytes
double 8 bytes
reference 4 bytes(压缩指针)