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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。