范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Java对象的字节大小计算

  一、java基本类型长度及对应对象的字节长度
  基本类型
  长度(字节)
  对象长度(字节)
  int
  4
  16
  short   2
  16
  long   8
  24
  byte   1
  16
  char   1
  16
  float   4
  16
  double   8
  24 System.out.println("Integer:" + ClassLayout.parseInstance(Integer.valueOf(122)).toPrintable());   输出Integer:java.lang.Integer object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 4 (object header) 01 00 00 00 (00000001 00000000 00000000 00000000) (1) 4 4 (object header) 00 00 00 00 (00000000 00000000 00000000 00000000) (0) 8 4 (object header) 64 22 00 f8 (01100100 00100010 00000000 11111000) (-134208924) 12 4 int Integer.value 122 Instance size: 16 bytes Space losses: 0 bytes internal + 0 bytes external = 0 bytes total   二、对象内部组成   普通对象实例   对象头   身体   填充对齐   mark   class指针   对象实际数据   padding   数组对象实例   对象头   身体   填充对齐   mark   class指针   数组Length   对象实际数据   padding   注:数组实例对象中对象头多了一个记录数组长度的int类型对象,占4字节   对象头:   第一个部分mark,用于存储对象的运行时数据,比如哈希码(hashCode)、GC年龄分代、锁状态标志、线程持有的锁、偏向线程id、偏向时间戳等。 另外一部分class指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的。   对象头占用空间:   1、在32位系统下,存放class指针的空间大小是4字节,MarkWork是4字节,对象头为8字节。   2、在64位系统下,存放Class指针的空间大小是8字节,MarkWordk是8字节,对象头尾16字节。   3、在64位开启指针压缩的情况下(-XX:+UseCompressedOops ),存放class指针的空间大小是4字节,markWord是8字节,对象头为12字节。   注:在开启指针压缩要求内存必须在4GB~32GB,因为32位指针寻址4GB,按8字节对齐, 4*8=32GB,按更大对齐可以寻址更大空间,但是浪费就更大了。   注:指针压缩不能压缩mark,指向非堆(Heap)的对象指针,局部变量、传参、返回值、NULL指针。   实例数据:   实例数据是对象存储的有效数据,也是程序代码中所定义的各种类型的字段内容,无论是从父类继承下来的,还是从子类中定义的,都需要记录起来。   对齐填充:   最后一块对齐填充空间并不是必然存在的,也没有特别的含义,它仅仅起着占位符的作用,这是由于HotSpot VM的自动内存管理系统要求对象起始地址必须是8字节的整数倍,换句话说,就是对象的大小必须是8字节的整数   空对象:   (此处的空对象是指类中没有任何基础类型和引用, 不是对象 = null)public class MyTest { @Test public void test(){ A a = new A(); System.out.println(ClassLayout.parseInstance(a).toPrintable()); } } class A{ }   关闭指针压缩   (-XX:-UseCompressedOops )   类A没有值类型和引用类型 对象大小应该为 8(markword)+8(klass) 16byte OFFSET SIZE TYPE DESCRIPTION VALUE 0 4 (object header) 01 00 00 00 (00000001 00000000 00000000 00000000) (1) 4 4 (object header) 00 00 00 00 (00000000 00000000 00000000 00000000) (0) 8 4 (object header) f0 e2 ba 17 (11110000 11100010 10111010 00010111) (398123760) 12 4 (object header) 00 00 00 00 (00000000 00000000 00000000 00000000) (0) Instance size: 16 bytes   开启指针压缩   对象大小应该为 8(markword)+4(klass)因为对象大小最后要能被8整除,所以还要所以还要+4的的填充对齐 ,最后大小还是16byte OFFSET SIZE TYPE DESCRIPTION VALUE 0 4 (object header) 01 00 00 00 (00000001 00000000 00000000 00000000) (1) 4 4 (object header) 00 00 00 00 (00000000 00000000 00000000 00000000) (0) 8 4 (object header) c8 16 01 20 (11001000 00010110 00000001 00100000) (536942280) 12 4 (loss due to the next object alignment) Instance size: 16 bytes   注:64位系统内存大于4GB且小于32GB JVM默认开启指针压缩。   三、普通对象public class MyTest { @Test public void test(){ A a = new A(); System.out.println(ClassLayout.parseInstance(a).toPrintable()); } } class A{ int a; float b; long c; String d; }   关闭指针压缩:   对象大小应该是 8(markword)+8(Klass)+4(int)+4(float)+8(long)+8(string)(引用指针)40byte OFFSET SIZE TYPE DESCRIPTION VALUE 0 4 (object header) 01 00 00 00 (00000001 00000000 00000000 00000000) (1) 4 4 (object header) 00 00 00 00 (00000000 00000000 00000000 00000000) (0) 8 4 (object header) 58 e3 e9 17 (01011000 11100011 11101001 00010111) (401204056) 12 4 (object header) 00 00 00 00 (00000000 00000000 00000000 00000000) (0) 16 8 long A.c 0 24 4 int A.a 0 28 4 float A.b 0.0 32 8 java.lang.String A.d null Instance size: 40 bytes   开启指针压缩:   对象大小应该是 8(markword)+4(Klass)+4(int)+4(float)+8(long)+4(string)(因为开启了指针压缩所以 引用指针 也是4byte)32byte OFFSET SIZE TYPE DESCRIPTION VALUE 0 4 (object header) 01 00 00 00 (00000001 00000000 00000000 00000000) (1) 4 4 (object header) 00 00 00 00 (00000000 00000000 00000000 00000000) (0) 8 4 (object header) c8 16 01 20 (11001000 00010110 00000001 00100000) (536942280) 12 4 int A.a 0 16 8 long A.c 0 24 4 float A.b 0.0 28 4 java.lang.String A.d null Instance size: 32 bytes   开启/关闭指针压缩的结果区别:   主要区别就是让原本占用8字节的指针缩小到4字节,另外未开启指针压缩时,上面提到的基本类型内存填充将会以8对齐,开启时以4字节对齐。但是对象尾部的填充不管是否开启都是以8字节对齐。   使用网上找的jar有个弊端   用这种方式只可以看到当前对象的大小,它所引用的对象实例大小是不会计算在里面的。如果要计算当前对象和对象引用的所有对象实例可以使用下面介绍的这个方法   可以使用jdk自带的jdk.nashorn.internal.ir.debug.ObjectSizeCalculator; 可以评估出对象的大小。   System.out.println("Integer:" + ObjectSizeCalculator.getObjectSize(Integer.valueOf(122)));

女人嘴上说不要,心里渴望得不行的3件事,男人别装不懂在网上看到这样一句话,说男人为什么永远不知道女人的真实想法?而女人又认为男人知道自己的想法,所以两个不同思维组合在一起,在情感面前变得很复杂。之所以思维不同,两人在感情面前多少会发公婆全款买房不加我名字,太不公平了有一种动机,细思极恐当女人总是要求房子,计较加谁名字的时候,知道落在男人的心里是什么感觉吗?前段时间,有个朋友因为孩子上学要过户父母的房子,结果妻子争着吵着要加上自己的名字,本来他就打算这样去做的,但农村又一怪现象,二婚女越来越受欢迎,为何初婚男抢着娶不知道大家有没有注意到这样一个有趣的现象,那就是在大城市里,不结婚的女性非常多,而在一些中小城市里,结不了婚的男性比例却更高。这也让不少人调侃剩女是主动剩,而剩男真的是被动剩。由于女人需要男人时,才会对你说这三种话,别错失机会在一段感情中,女人往往是非理性的,这个时候就会变得非常敏感,一个不经意的动作或者一句话就会让她浮想联翩。但与此同时,女人又是矜持的,在喜欢的男生跟前,女人会变得内敛,她们一般不会直艾创米你装指纹锁要了解的锁体分类有哪些锁体是智能锁或指纹锁的重要组成部件,对于智能锁的安全性能使用便利性寿命等方面有着重要的影响。面对纷繁复杂的锁体类型,我们如何慧眼如炬选择到一把称心的智能锁,并且能区分其锁体类别,可艾创米选择生物活体指纹识别与光学指纹识别的区别光学指纹扫描仪的工作原理指纹扫描仪系统有两项基本工作一是需要获得手指的图像,二是需要确定该图像中的嵴纹和波谷是否与以前扫描图像中的嵴纹和波谷相吻合。获得一个人的指纹图像有多种方法。小舍得看原生家庭的人情冷暖最近由佟大为小宋佳刘楚恬张国立李佳航蒋欣等主演的,围绕着孩子小升初的家庭伦理剧小舍得正在热播,里面的剧情贴合当前社会风气,角色的表演令人深刻。下面谈谈自己的一些追剧感受。一角色演技这篇文案充满了虚伪和自私,对生命和社会法律伦理的漠视1这是我非常伤心和私密的事情,本不愿意在大家面前多说面对这两天,各大官媒和央视的批评,点出代孕和弃养是道德法律所不允许的,而zs第一句话可以这样理解出现这样的事我很伤心,这是真的,安装艾创米指纹锁要做好哪些准备?相信很多的消费者已经开始留意到了指纹锁!因为指纹锁方便好看安全,就算有时候忘记带钥匙,只要轻轻触碰门把手,就可以轻松开门回家。所以越来越多的消费者也产生了更换指纹锁的念头,可是又不艾创米老师傅说指纹锁插芯真假辨别方法随着智能锁的普及,大家对于锁具的工艺结构和功能开始有了更多了解。在智能锁产品中,很多商家和经验丰富的消费者经常用真插芯假插芯锁,来辨别区分锁具。那么,这个真假插芯到底有什么玄妙么?锁已不是那把锁,芯还是那个心,人生如锁钥匙走了,锁在等待许久,钥匙回来了锁却打不开了,不是锁变芯了是钥匙被淘汰了多少年了主人将你(钥匙)形影不离地放在身上每次出门回家都离不开你而你跟主人久了知道主人离不开你没有你主人就
中国未来3大黑科技,有可能拯救世界未来,西方国家表示很羡慕图为高温超导磁悬浮列车虽然起步比西方更晚,但近些年来,中国在科技领域奋起直追,取得了一系列领先于西方的优秀成果,其中就包括中国的这未来三大黑科技,甚至有可能拯救世界未来,别再吹捧西中国发展电动车并不环保,为何却要大力推行?看看欧盟的处境就懂了中国发展电动车并不环保,为何却要大力推行?看看欧盟的处境就懂了正时财经202204162248自从俄罗斯减少能源出口之外,国际石油价格不断上涨,影响到不少国家的发展问题。而我国的国上汽集团4月18日启动复工测试Tech星球4月17日消息,据报道,上汽集团发布了复工复产疫情防控工作指南,4月18日将开始启动复工复产压力测试。上汽集团有关负责人表示,不仅是他们的整车厂进行压力测试,同时会带动特斯拉2022年04月17日新消息特斯拉特斯拉2022年04月17日新消息一年暴涨490!什么产品让马斯克抓狂!周末重磅!上海有序推动工业企业复工复产!余承东等曾坦言供应链特斯拉已经在瑞士推出德国制造的柏林版Mod寒武纪2021年收入增近六成因研发投入高尚未盈利新京报贝壳财经讯(记者罗亦丹)4月16日,人工智能芯片企业寒武纪发布2021年年度报告,报告期内公司实现营业收入7。21亿元,同比增长57。12,归属于上市公司股东的净利润亏损8。带大家看看宋plusdmi宋PLUSDMi使用的是EHS132和EHS145两个版本,对应的分别是51km和110km续航版本。两个版本的EHS电混系统驱动电机功率也会有差异,110km版本的电机最大功率和摩卡0焦虑智能电动摩卡DHTPHEV0焦虑性能版4。8s零百加速极智性能纯电出行快人一步高性能电四驱适应全场景路况无惧路况挑战摩卡DHTPHEV0焦虑智享版WLTC综合续航1000km,纯电和混动两乒乓球拍能实现击球数击球位置的显示吗?找的到智能乒乓球拍吗SmartiBat1代是一种智能乒乓球拍,它涉及乒乓球拍技术领域。具有可让用户通过移动终端App获得接球红面及黑面的位置数量频率挥拍速度姿势等综合运动数据,从而指导用户提升打球质量连续三季度夺得新势力冠军,小鹏汽车凭什么?在原材料短缺与疫情反复的双重考验下,今年一季度汽车行业迎来了并不完美的开局。但即便如此,面对新能源步入市场化发展以及燃油车成本高涨,新能源车仍然炙手可热。中汽协数据显示,一季度新能简历有虚假信息就必死?其实里面有技巧哦给大家透漏个招聘小秘密简历做了美化,面试时被HR发现,是不是就意味着自己不诚信,直接被贴上不诚信的标签并打入地牢?我可以负责任地告诉大家,这只是你以为的,真实情况是不一定哦首先我们李开复硬科技是最好的投资机会2022年3月7日下午,母基金研究中心视频号进行了首次直播。中国国际科技促进会母基金分会秘书长水木资本合伙人李瑶担任主持人,对话创新工场董事长兼首席执行官李开复科勒(北京)私募基金