内存中对象的大小
本文关键字:对象 内存 | 更新日期: 2023-09-27 18:24:01
如果我有一个类,它有100个属性都是int32的,并且我已经实例化了其中100个对象,那么即使在设置任何属性之前,它是否一定会占用40000字节(加上对象所需的任何其他开销),或者在第一次实际为预属性赋值之前,部分(或全部)空间是否保持未分配?
创建对象时,会立即为所有字段分配内存。请注意,对象的大小还包括对象标头、填充等。
实例化对象后立即使用内存,因为int
是一种值类型。
引用类型的工作方式略有不同。如果您要使属性字符串而不是整数,您仍然会使用约40000字节,但不再使用,因为此时您的字符串都是空引用(空引用仍然保留引用的空间)。当您开始为字符串设置值时,您将开始使用空格。
所有类范围的字段都是在实例化后"分配"的,而本地范围的变量可以无限期地保持未分配状态。因此,值类型使用其适当的大小,而引用使用移动指针的大小,无论怎样——当它们在类级别上起作用时。
还要注意的是,除非布局是顺序的(如在结构中)或显式的,否则大多数值类型将被填充到至少32位。
预测空引用将占用多少空间并不总是简单的,但如果它们是普通指针,它们在x86平台上将占用4个字节,在x64平台上将消耗8个字节。
Int32
和所有值类型一样,都有一个默认值。(0)
是的;一旦创建了这些Int32
变量,它们就会占用内存。