java对象占用内存大小计算,java对象内存大小

  java对象占用内存大小计算,java对象内存大小

  出发地:www.java265.com/javajingyan/202110/16349927561557.html 3358号公路

  下面,我将告诉您如何共享java对象的空间大小,如下所示:

  第一个对象头中至少有两个单词。

  如果对象是一个数组,需要三个字,如下所示:

  对象的HashCode,锁信息对象类型数据的指针数组长度(对象是数组)Java代码中的计算规则,任何对象都是8字节对齐的。

  属性按照[long,double],[int,float],[char,short],[byte,boolean]和引用的顺序存储。

  示例:

  公共类测试{

  字节a;

  int b;

  布尔c;

  长d;

  对象e;

  }当对象的属性按上述顺序存储时,

  它的占用空间是

  head(8)a(1)padding(3)b(4)c(1)padding(7)d(8)e(4)padding(4)=40

  如果遵循这个规则:head(8)d(8)b(4)a(1)c(1)padding(2)e(4)padding(4)=32

  可以解决很多空间。说到继承,我们会先把成员放在父类中,然后按照一个基本原则把成员用例放在子类中:

  A级

  长a;

  int b;

  int c;

  }

  B类扩展了A {

  长d;

  }根据上述规则,存储空间大小为:

  head(8) a(8) b(4) c(4) d(8)=32

  当父类中的属性少于八个字节时,

  如果父类的最后一个成员和子类的第一个成员之间的间隔小于4个字节,

  此时需要扩展到4字节的基本单位。

  示例:

  A级

  字节a;

  }

  B类扩展了A {

  字节b;

  }占用大小为:

  head(8)a(1)padding(3)b(1)padding(3)=16

  -

  当子类的第一个成员是double或long时

  并且父类还没有用完8个字节。

  JVM将打破规则,用更小的数据填充空间。

  示例:

  A级

  字节a;

  }

  B类扩展了A {

  龙b;

  短c;

  字节d;

  }根据以上占用空间大小:

  head(8)a(1)padding(3)c(2)d(1)padding(1)b(8)=24

  版权归作者所有:博主java Elf原创作品,转载授权请联系作者,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: