java对象在内存中存储的布局
2016-09-01 19:07
316 查看
1)对象头
1,存储对象自身的运行时数据,如哈希码、GC分代年龄、键状态标识、线程持有的锁、偏向线程ID、偏向时间戳,对象头信息时与对象自身定义的数据无关的额外存储成本
2,类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象时哪个类的实例。
2)实例数据,对象真正存储的有效信息,也是在程序代码中所定义的各种类型的字段内容,无论从父类继承下来的还是在子类中定义的,都需要记录下来。这个部分的存储顺序会受到虚拟机分配策略参数和字段在java源码中定义的顺序的影响,相同宽度的字段总被分配到一块。
3)对其填充,没有特殊含义,只是起着占位符的作用。由于HotSpot VM的自动内存管理系统要求对象的起始地址必须是8字节的整数倍,就是对象的大小必须是8字节的整数倍,当对象的实例数据部分没有对齐的时候,就需要对齐填充来补全。
1,存储对象自身的运行时数据,如哈希码、GC分代年龄、键状态标识、线程持有的锁、偏向线程ID、偏向时间戳,对象头信息时与对象自身定义的数据无关的额外存储成本
2,类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象时哪个类的实例。
2)实例数据,对象真正存储的有效信息,也是在程序代码中所定义的各种类型的字段内容,无论从父类继承下来的还是在子类中定义的,都需要记录下来。这个部分的存储顺序会受到虚拟机分配策略参数和字段在java源码中定义的顺序的影响,相同宽度的字段总被分配到一块。
3)对其填充,没有特殊含义,只是起着占位符的作用。由于HotSpot VM的自动内存管理系统要求对象的起始地址必须是8字节的整数倍,就是对象的大小必须是8字节的整数倍,当对象的实例数据部分没有对齐的时候,就需要对齐填充来补全。
相关文章推荐
- C#和JAVA对象在内存中的存储
- 深度理解java虚拟机读书笔记(二)HotSpot Java对象创建,内存布局以及访问方式
- java对象的内存布局(一):计算java对象占用的内存空间以及java object layout
- Java对象的内存布局以及对象所需内存大小计算详解
- JAVA对象内存布局 以及对象定位
- Java内存布局【图】以及java各种存储区【详解】
- Java 内存——Java虚拟机中对象的创建、存储、访问定位。
- java程序中java对象存储和内存分配的原理?
- 附 Java对象内存布局
- Java对象的内存布局以及对象所需内存大小计算详解
- JVM 内存分配模型概念和java中各种对象的存储
- Java内存区域、内存溢出异常和对象创建、布局、访问全过程
- java对象的内存布局(一):计算java对象占用的内存空间以及java object layout工具的使用
- 【深入理解JVM】:Java对象的创建、内存布局、访问定位
- JAVA对象内存布局
- java对象的内存布局
- Java--对象内存布局
- Java对象的内存布局
- java虚拟机在java堆中对象内存分配、布局、访问
- java-对象的理解-对象在内存的存储