JVM(PART III)对象的内存布局
来源:互联网 发布:沈航网络自助平台套餐 编辑:程序博客网 时间:2024/06/01 07:46
在HotSpot虚拟机中,对象在内存中的布局可以分为3块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding)。——《深入理解java虚拟机》
布局:
对象头:
共包括两个部分:
Tips:如果对象是一个Java数组,那么在对象头中还必须有一块用于记录数组长度的数据。(JVM可以通过普通java对象的元数据信息确定java对象的大小,但是从数组的元数据中无法得知数组的大小)。
运行时数据(Mark Word)
这个部分主要包括:哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳。
在32位和64位的虚拟机中长度分别为32bit和64bit
在32位的HotSpot虚拟机中,如果对像除以未被锁定的状态下:
类型指针
AKA:对象指向它的类元数据的指针,虚拟机通过这个指针来判断这个对象是哪个类的实例。(并不是所有虚拟机都需要保留)。
实例数据
记录从父类继承和自己定义的字段的内容。
在Hotspot中的分配策略:
longs/doubles
ints
shorts/chars
bytes/booleans
oops(Ordinary Object Pointers)
相同字宽的会被分配到一起。在父类中定义的变量出现在子类之前。
对齐填充
存在的意义:占位符
HotSpot VM的自动内存管理系统要求对象的起始地址必须为8字节的整数倍。(对象的大小必须为8字节的整数倍,对象头部分正好是8字节的倍数)。当实例数据没有对齐时需要通过对齐填充来补全。
阅读全文
1 0
- JVM(PART III)对象的内存布局
- jvm中对象的内存布局(HotSpot为例)
- Understanding the JVM(三)对象的内存布局
- JVM对象的内存布局和访问
- JVM对象的创建、内存布局、访问
- jvm之对象的内存布局
- JVM(六)对象的内存布局
- 细说JVM系列:JVM对象的创建、内存布局、访问
- JVM的内存布局
- jvm读书笔记-2.3内存对象的创建、布局和访问
- JVM——深入分析对象的内存布局
- JVM——深入分析对象的内存布局
- JVM——深入分析对象的内存布局
- JVM——深入分析对象的内存布局
- JVM (PART IV)对象的访问定位
- JVM(PART I)—Java内存
- JVM (PART X) 内存分配图解
- JVM(二)JVM内存布局
- 1180: [NOIP2013普及组]表达式求值
- 计算多段时间的重叠
- Rsrudio使用出现问题
- spark work task 源码分析
- 时间段的拼接
- JVM(PART III)对象的内存布局
- Linux文件的查看与权限
- CodeForces-776D The Door Problem
- Laravel5.4快速开发简书网站
- 牛客网--链表反转打印
- 常见智力题总结
- 2.5类型别名,auto, decltype
- Coursera 《Machine Learning》 编程作业7:K-means聚类和主成分分析
- TCP三次握手四次挥手的原因