首页 > 编程语言 >Java查看对象头大小

Java查看对象头大小

时间:2024-08-23 10:14:52浏览次数:9  
标签:ClassLayout Java String 查看 对象 object bytes User user

添加依赖

        <dependency>
            <groupId>org.openjdk.jol</groupId>
            <artifactId>jol-core</artifactId>
            <version>0.17</version>
        </dependency>

查看对象头大小

    @Test
    void header() {
        ClassLayout layout = ClassLayout.parseInstance(new Object());
        System.out.println(layout.toPrintable());
        ClassLayout layout2 = ClassLayout.parseInstance(new int[]{});
        System.out.println(layout2.toPrintable());
        User user = new User();
        user.setAge(2);
        user.setName("hello");
        ClassLayout layout3 = ClassLayout.parseInstance(user);
        System.out.println(layout3.toPrintable());
    }

    @Data
    public static class User {
        private String name;
        private Integer age;
        private String remark;
    }

输出:

JavaObjectHeaderTest$User object internals:
OFF  SZ                TYPE DESCRIPTION               VALUE
  0   8                     (object header: mark)     0x0000000000000001 (non-biasable; age: 0)
  8   4                     (object header: class)    0x00d00eb0
 12   4    java.lang.String User.name                 (object)
 16   4   java.lang.Integer User.age                  2
 20   4    java.lang.String User.remark               null
Instance size: 24 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

创建一个自定义User对象,对象头大小为24 Bytes

标签:ClassLayout,Java,String,查看,对象,object,bytes,User,user
From: https://www.cnblogs.com/jiayuan2006/p/18375446

相关文章

  • 面向对象的设计原则--依赖倒置原则
    依赖倒置原则这是面向对象设计中非常重要的一个原则,它是SOLID原则中的一个,SOLID代表了五个设计原则的首字母缩写,用于指导开发者编写可维护和可扩展的代码。以下是依赖倒置原则的详细解释:抽象不应该依赖于细节,细节应该依赖于抽象这意味着在设计中,我们应该尽量让高层模块(......
  • 第一个Java程序HelloWorld
    编写第一个程序HelloWorld在任意文件夹中创建java文件例如新建一个文本文件(.txt),然后修改文件名和文件扩展名记得打开显示文件扩展名!!!在Notpad++或记事本中打开刚刚创建的java文件(hello.world)编写publicclasshello{ publicstaticvoidmain(String[]args){ System.ou......
  • Java学习笔记8-数据类型
    Java中主要有八种基本数据类型:byte、short、int、long、float、double、boolean、char。各种数据类型作用:1、byte:8位、有符号的以二进制补码表示的整数。min:-128(-2^7)。max:127(2^7-1)。default:0。对应包装类:Byte。2、short:16位、有符号的以二进制补码表示的整......
  • 05-02 Relationships Between Objects(对象之间的关系 )
    RelationshipsBetweenObjects(对象之间的关系)XPOsupportsthreetypesofrelationshipsbetweenobjects.Thetypeofarelationshipthatiscreateddependsuponhowrelatedobjectsaredefined.XPO支持对象之间的三种类型的关系。创建的关系类型取决于相关对......
  • 05-03 Map Persistent Objects to Database Views(将持久对象映射到数据库视图 )
    MapPersistentObjectstoDatabaseViews(将持久对象映射到数据库视图)CreateaPersistentClass(创建持久类)Createapersistentclass.Theclassnameshouldmatchtheviewname.创建一个持久类。类名应与视图名匹配。AssignthePersistentattributetotheper......
  • 05-04 Basics of Creating Persistent Objects for Existing Data Tables(为现有数据表
    BasicsofCreatingPersistentObjectsforExistingDataTables(为现有数据表创建持久对象的基础知识)ToaccessanexistingdatatableinadatabaseandworkwithitusingthefunctionalityprovidedbyeXpressPersistentObjects(XPO),youneedtocreateap......
  • 05-01 Create a Persistent Object(创建持久对象)
    CreateaPersistentObject(创建持久对象)TheXPOORMcanloadandsavetoadatastoreonlypersistentobjects.XPOORM只能加载持久对象并将其保存到数据存储中。Youmakeyourbusinessobjectspersistentinanyofthefollowingways:您可以通过以下任何方式......
  • 浅谈Java MyBatis
    一、MyBatis的基本介绍  MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,由谷歌托管,并且改名为MyBatis。2013年11月迁移到Github。    MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。......
  • java+vue计算机毕设美食(风情)展示系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球化和互联网的飞速发展,人们对美食的追求已不再局限于地域限制,而是跨越国界,渴望体验不同文化背景下的风味佳肴。美食不仅是味蕾的享受,更是文化......
  • java+vue计算机毕设快递驿站管理系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着电子商务的蓬勃发展,快递行业迎来了前所未有的增长高峰。每天数以亿计的包裹在各大城市间流转,快递驿站作为连接快递公司与用户的最后一公里服务节......