java中如何将内存分配给对象

java中如何将内存分配给对象,java,memory,heap,Java,Memory,Heap,我有一个包含300个变量的POJO类。我想保留这些POJO类的列表。在这300个字段中,由于没有使用,150个字段将始终为空。 请告诉我JVM是否会将内存分配给空字段?堆内存会有问题吗?在Java中,即使字段为空,它在32位系统上仍会占用4个字节,在64位系统上仍会占用8个字节以保持空引用。因此,在这种情况下,对象将使用150*4(对于64位,150*8)额外字节来保留未使用的字段。但是,在不同时分配太多实例之前,这并不是什么大问题。这个问题听起来有点不确定每个对象所需的总空间与第一个答案一致(

我有一个包含300个变量的POJO类。我想保留这些POJO类的列表。在这300个字段中,由于没有使用,150个字段将始终为空。
请告诉我JVM是否会将内存分配给空字段?堆内存会有问题吗?

在Java中,即使字段为空,它在32位系统上仍会占用4个字节,在64位系统上仍会占用8个字节以保持空引用。因此,在这种情况下,对象将使用150*4(对于64位,150*8)额外字节来保留未使用的字段。但是,在不同时分配太多实例之前,这并不是什么大问题。

这个问题听起来有点不确定每个对象所需的总空间与第一个答案一致(32位系统的总空间为*4字节,64位系统的总空间为*8字节)。但从可维护性的角度来看,300是一个很大的变量。我建议将它们分组到单独的对象中,例如,所有地址字段将进入一个地址对象,该地址对象的id通过地址成员引用:private address address;如果未定义地址,则其本身可以为空。