深圳哪个公司做网站好,网页制作平台哪个好,网易免费邮箱注册,长沙网页制作网站在HotSpot虚拟机中#xff0c;对象在内存中的存储布局可以分为3块区域#xff1a;对象头部、实例数据、对齐填充。 一、对象头部Header的布局
Mark WordClass 指针在32位系统下#xff0c;上面两部分各占4B; 在64位系统中#xff0c;Mark Work占4B#xff0c;class指针在… 在HotSpot虚拟机中对象在内存中的存储布局可以分为3块区域对象头部、实例数据、对齐填充。 一、对象头部Header的布局
Mark WordClass 指针在32位系统下上面两部分各占4B; 在64位系统中Mark Work占4Bclass指针在开启指针压缩的时候占4B;为开启指针压缩的时候占8B. 1、Mark Word 存储对象自身的运行时数据信息例如哈希码GC分代年龄锁状态标志线程持有的锁偏向线程ID。 2、Class 指针通过该指针确定该对象是哪个类的实例。 另外如果该对象是一个数组那么还将会有一个数据来记录数组的长度4B(32bit)/8B(64bit)。
二、数据部分 在该字段中无论是从父类继承下来的还是该类自身的都需要记录下来而这部分的存储顺序受虚拟机的分配策略和定义的顺序的影响。 默认分配策略long/double - int/float - short/char - byte/boolean - Reference 如果设置了-XX:FieldsAllocationStyle0默认是1那么引用就会放在最前面: Reference - long/double - int/float - short/char - byte/boolean 结论分配策略总是按照宽度由大到小的顺序排列相同宽度的放在一起。 在有继承关系的对象中只有一个头部父类的属性分配到该对象中这样才能通过父类访问他的属性。如果开启CompactFields,那么子类中较窄的变量就会插到父列的变量的空隙中。 [[注]] 静态属性所占的空间通常不计算到对象本身的空间中以为他的引用是在方法区。 属性的对齐例如byte占用一个字节的空间那么就会填充3字节实现对齐。(32bit系统)
三、对齐填充 Java对象在内存中将以8字节对齐也就是对象的总大小必须是8字节的整数倍。