对象头 Mark Word:占32bit或64bit(看jvm是多少位的),以32位为例,通常气孔下存储对象的hashcode、gc分代年龄、锁标志位、是否应用偏向锁。当该对象被作为同步锁时,该32位可悲复用存储其他信息:偏向锁-》偏向id偏向时间戳;轻量级锁-》指向线程的Displace Mark Word的指针;重量级锁-》仔细那个重量级锁的指针 Class Matedata Address:类型指针指向方法区中该对象所属类的元数据信息,占4个或8个字节 ArrayLength:如果是数组对象才会有这部分内存,记录了数组的长度
实例数据 应用程序实实在在要访问的数据,通常由以下变量组成 byte,char,short,int,float占四个字节(这是在jvm存储的数据结构,和语言层面有本质的不同) long,double 占八个字节 reference 占四个或八个字节 内部类 以上类型的组合
对齐填充 这部分数据没有实质性的作用,仅用来占位。 Hotspot的内存管理系统是一8个字节位单位的,非数组对象的对象头刚好是8字节或16字节,因此当实例数据不是8字节倍数时需要用这个来填充