我想知道如果我创建一个类似于"New Object()"的新对象,会在内存中保留多少空间。因为在堆上创建的任何对象所占用的空间都等于其实例变量大小的总和。
我想知道如果我创建一个类似于"New Object()"的新对象,会在内存中保留多少空间。因为在堆上创建的任何对象所占用的空间都等于其实例变量大小的总和。
这个问题很广泛。
它取决于类变量或者你可以称之为Java状态内存使用。
它还需要一些额外的内存来存储头信息和引用。
Java对象使用的堆内存包括:
原始类型字段的内存,根据它们的大小(有关原始类型的大小,请参见下面的表格);
引用字段的内存(每个4字节);
对象头,由几个字节的“管理”信息组成;
Java中的对象也需要一些“管理”信息,例如记录一个对象的类、ID和状态标志,例如对象当前是否可达、当前是否同步锁定等。
32位和64位JVM的Java对象头大小不同。
尽管这些是主要的内存消耗者,JVM有时也需要额外的字段,例如用于代码对齐等。
原始类型的大小
boolean 与 byte -- 1
char 与 short -- 2
int 与 float -- 4
long 与 double -- 8