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

java中一个空的Object对象在HotSpot虚拟机中占用多大的内存空间?

在HotSpot虚拟机中,一个空的Object对象在64位的环境下通常占用约 16 字节的对象头。
这个对象头包括:

  1. 标记字(Mark Word): 8 字节,用于存储对象的状态信息、锁信息等。
  2. 类型指针(Class Pointer): 4 字节,指向该对象的类的元数据。
  3. 对齐填充(Alignment Padding): 通常是 4 字节,用于满足对象在内存中的对齐要求。

对象头大小可以通过使用ObjectLayout类来获取,该类是OpenJDK中的一个工具类,提供了关于对象布局的信息。

  1. 添加依懒
<dependency>
	<groupId>org.openjdk.jol</groupId>
	<artifactId>jol-samples</artifactId>
	<version>0.17</version>
</dependency>
  1. ObjectSizeDemo类
package com.xiangpingeasy.learn.demo;

import org.openjdk.jol.info.ClassLayout;

public class ObjectSizeDemo {

    public static void main(String[] args) {
        Object obj = new Object();
        String objectLayout = ClassLayout.parseInstance(obj).toPrintable();
        System.out.println(objectLayout);
    }
}

  1. 运行输出结果
java.lang.Object object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE
  0   8        (object header: mark)     0x0000000000000001 (non-biasable; age: 0)
  8   4        (object header: class)    0x00000e80
 12   4        (object alignment gap)    
Instance size: 16 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total

这个工具类需要添加相关的依赖,具体的使用方法和输出会根据具体的HotSpot虚拟机版本而有所不同。在实践中,这样的小对象占用的空间相对较小,但具体的大小仍然可能会受到JVM版本、运行时参数等因素的影响。


http://www.kler.cn/news/157082.html

相关文章:

  • Vue3 组合式实现 带连接线的Tree型 架构图(一级树形图)
  • 基于springboot + vue框架的网上商城系统
  • Android多用户初探
  • vscode里面使用vue的一些插件,方便开发
  • Spring Security 6.x 系列(8)—— 源码分析之配置器SecurityConfigurer接口及其分支实现
  • MySQL官网推荐书籍
  • 【接口测试】POST请求提交数据的三种方式及Postman实现
  • 【广州华锐视点】机械零件拆装VR仿真教学系统
  • 【EI会议征稿】第五届人工智能与机电自动化国际学术会议(AIEA 2024)
  • bad_python
  • Vue3实现一个拾色器功能
  • TimeGPT:时间序列预测模型实例
  • TDA4开发环境Docker化
  • 《系统架构设计师教程(第2版)》第2章-计算机系统基础知识-01-计算机硬件
  • Spring中通知是什么
  • Redis7--基础篇4(Redis事务)
  • CocosCreator 面试题(二十) Cocos creator 如何实现一个置灰Shader?
  • [Ubuntu 20.04] 使用Netplan配置网络静态IP
  • RH850P1X芯片学习笔记-Pin Functions
  • 智能优化算法应用:基于松鼠算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 什么是Overlay网络?Overlay网络与Underlay网络有什么区别?
  • 搭建CIG容器重量级监控平台
  • C\C++ 获取最值
  • 无人机覆盖路径规划综述
  • 学习率设置(写给自己看)
  • Redis队列stream,Redis多线程详解
  • Python3+selenium自动化测试框架详解
  • LoadBalancer将服务暴露到外部实现负载均衡Openelb-layer2模式配置介绍
  • 新数字化时代广告的多变式玩法:广告电商
  • 基于Java SSM产品销售管理系统