当前位置: 首页 > news >正文

JVM—Java对象

JVM中的Java对象在堆内存中的存储分布可以分为对象头,实例数据和对齐填充三部分

对象头:

包含运行时元数据和类型指针

1、Mark Word(标记字段)

对象自身的运行时数据:
  • 锁状态标志(无锁、偏向锁、轻量级锁、重量级锁、GC标记)
  • 哈希码
  • 分代年龄(用于分代GC)
  • 线程ID(偏向锁持有者)
长度:
  • 32位JVM:4字节
  • 64位JVM:8字节,开启指针压缩(-XX:+UseCompressedOops)后可能优化为4字节
数组长度(仅数组对象有)

实例数据

存储对象的字段数据(包括从父类继承的字段)排列顺序受,​字段分配策略​ 影响:

  • 默认策略​:按 long/double → int/float → short/char → byte/boolean → 引用类型 降序排列。
  • 父类字段在前,子类字段在后
  • 相同宽度的字段会被分配在一起​(减少内存填充)。

对齐填充:

  • JVM要求对象大小必须是8字节的整数倍,如果对象头+实例数据总大小不满足会额外填充字节
  • 作用优化内存访问性能(CPU按块读取,对齐后减少缓存行未命中)
http://www.xdnf.cn/news/612091.html

相关文章:

  • PLC 数据采集网关 (三格电子)
  • 如何选择服务器机房托管服务?
  • 主类网络和无类网络,什么是主类网络边界
  • bi软件是什么?bi软件是做什么用的?
  • 【PINN】DeepXDE学习训练营(32)——pinn_forward-fractional_diffusion_1d.py
  • YOLOv11改进 | Conv/卷积篇 | 2024 ECCV最新大感受野的小波卷积WTConv助力YOLOv11有效涨点
  • docker镜像操作
  • 《深度揭秘:解锁智能体大模型自我知识盲区探测》
  • 若依 Plus 自定义字典的使用
  • 自动生成md文件以及config.mjs文件-vitepress
  • Flink基于Yarn多种启动方式详解
  • C++之fmt库介绍和使用(3)
  • CARIS HIPS and SIPS 12.1是专业的多波束水深数据和声呐图像处理软件
  • Graph RAG应用实战
  • socc 19 echash论文部分解读
  • 深度学习优化器相关问题
  • yolov5 安卓运行
  • Docker部署Zookeeper集群
  • C++学习之打车软件—JNI终端编程业务④https协议session开发
  • Open CASCADE学习|非线性方程组求解技术详解
  • 公司内网本地的SVN没有公网IP地址,在家外网也能远程访问SVN服务!
  • postgresql 的优劣势比较
  • 多模态理解大模型高性能优化丨前沿多模态模型开发与应用实战第七期
  • WPF性能优化之延迟加载(解决页面卡顿问题)
  • Python面向对象编程:封装、继承与多态
  • 七彩喜适老化改造:让每个空间成为长者尊严的守护者
  • Jouier 普及组十连测 R4
  • leetcode-快慢指针系列
  • 利用chat搜索需求相关视频链接
  • 45道工程模块化高频题整理(附答案背诵版)