在 HotSpot 虚拟机中,一个对象的存储结构分为3块区域:对象头(Header)、实例数据(Instance Data) 和 对齐填充(Padding);
**对象头(Header):**包含两部分,第一部分用于存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等,32 位虚拟机占 32 bit,64 位虚拟机占 64 bit,官方称为 ‘Mark Word’;

第二部分是类型指针,即对象指向它的类的元数据指针,虚拟机通过这个指针确定这个对象是哪个类的实例,另外,如果是Java数组,对象头中还必须有一块用于记录数组长度的数据,因为普通对象可以通过 Java 对象元数据确定大小,而数组对象不可以;

**实例数据(Instance Data):**程序代码中所定义的各种成员变量类型的字段内容(包含父类继承下来的和子类中定义的);

**对齐填充(Padding):**不是必然需要,主要是占位,保证对象大小是某个字节的整数倍,HotSpot虚拟机,任何对象的大小都是8字节的整数倍;

https://blog.csdn.net/weixin_39982236/article/details/110724755

jvm 什么是对象头,里面有什么相关推荐

  1. JVM - 剖析Java对象头Object Header之指针压缩

    文章目录 Pre 指针压缩 论证压缩效果 UseCompressedOops & UseCompressedClassPointers [指针压缩]开启 VS 关闭 指针压缩的目的 为什么堆内 ...

  2. 64位JVM的Java对象头详解

    关注"Java艺术"一起来充电吧! 我们编写一个Java类,编译后会生成.class文件,当类加载器将class文件加载到jvm时,会生成一个Klass类型的对象(c++),称为类 ...

  3. JVM - 剖析Java对象头Object Header之对象大小

    文章目录 Pre 总览 对象头剖析 查看对象内存的占用情况 对象头C++源码 注释 Pre JVM - 写了这么多年代码,你知不道new对象背后的逻辑? 中大体介绍了Java中 new 对象背后的主要 ...

  4. 64位java_99.9%的Java程序员都说不清的问题:JVM中的对象内存布局?

    点击上方石杉的架构笔记,右上选择"设为星标" 每日早8点半,精品技术文章准时送上 往期文章 BAT 面试官是如何360°无死角考察候选人的(上篇) 每秒上万并发下的Spring C ...

  5. java对象添加字段_99.9%的Java程序员都说不清的问题:JVM中的对象内存布局?

    在 Java 程序中,我们拥有多种新建对象的方式.除了最为常见的new语句之外,我们还可以通过反射机制.Object.clone方法.反序列化以及Unsafe.allocateInstance 方法来 ...

  6. JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配

    文章目录 前言 零.排序规范 1.happens-before原则 2.找文档位置 一.一线互联网企业关于对象面试题: (后面回答的就是这几个问题) 二.对象创建过程 三.对象在内存中的存储布局 1. ...

  7. 【JVM】Java对象创建的流程步骤

    · 本文摘要 · 罗列Java创建对象的各种方式: · 讲解Java对象创建的流程步骤: 一.Java创建对象的各种方式 · 1. 用关键字new,老少皆知的方法:StringBuffer sb = ...

  8. java对象头_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  9. 深入理解多线程(三)—— Java的对象头

    上一篇文章中我们从HotSpot的源码入手,介绍了Java的对象模型.这一篇文章在上一篇文章的基础上再来介绍一下Java的对象头.主要介绍一下对象头的作用,结构以及他和锁的关系. Java对象模型回顾 ...

最新文章

  1. linux useradd
  2. MyEclipse在保存时总是building workspace,反应很慢
  3. python代码画图案-python如何绘制iPhone手机图案?(代码示例)
  4. nginx常用代理配置
  5. 【C++】静态成员 static
  6. 汇编怎么输入_一位过来人的嵌入式汇编语言学习经验
  7. 使您的Java代码闻起来很新鲜
  8. 干掉勒索病毒的22岁程序员自曝黑历史:中学是电脑白痴
  9. android handler1--消息队列概念
  10. Android FrameWork——Activity启动过程详解
  11. 聊聊浏览器(webkit)资源加载机制
  12. android电视开发远程开关机,一种电视电脑一体机及其实现远程开关机控制的方法...
  13. fiddler4苹果手机证书无法使用的问题解决方案
  14. 如何计算信号的信噪比
  15. 论文《Reasoning With Neural Tensor Networks for Knowledge Base Completion》的学习笔记
  16. Android 优秀的开源库
  17. 政务微信门户建设思考
  18. 什么是域,域树,深林?
  19. 高德打车通用可编排订单状态机引擎设计
  20. uploadFile+nginx实现上传图片(Windows/Linux均可用)

热门文章

  1. Hive自定义UDF和聚合函数UDAF
  2. SVG animation 回顾
  3. 在jmeter测试中模拟不同的带宽环境
  4. 创建ACFS集群文件系统(命令方式)
  5. Zabbix 集成 OneAlert 实现全方位告警
  6. 浅谈C#中的异步编程
  7. SD-WAN技术分析—Vecloud
  8. 【指标统计】指标统计相关配置项及说明
  9. PostgreSQL字符集问题
  10. 数据仓库-数据仓库的简介(由来、与关系数据库的区别、数据仓库模型)