繁体   English   中英

内存中对象的大小

[英]Size of objects in memory

如果我有一个具有100个都是int32的属性的类,并且已经实例化了100个这些对象,那么即使在设置任何属性之前还是执行某些操作(或全部)保留该空间,直到您第一次真正为前置操作分配值之前?

创建对象时,将立即分配所有字段的内存。 请注意,对象的大小还包括对象标头,填充等。

实例化对象后立即使用内存,因为int是一种值类型。

引用类型的工作有点不同。 如果要使用属性字符串而不是整数,则仍将使用〜40,000字节,但不能再使用更多字节,因为此时您的字符串都是空引用(空引用仍为引用保留空间)。 开始为字符串设置值时,您将开始使用空格。

像所有值类型一样, Int32具有默认值。 (0)

是的 一旦创建了这些Int32变量,它们就会占用内存。

实例化后,所有类作用域字段都是“分配的”,这与局部作用域变量不同,后者可以无限期保持未分配状态。 因此,值类型消耗它们的适当大小,而引用则消耗移动指针的大小,无论它们是什么(当它们在类级别作用域时)。

还要注意,除非布局是顺序的(如在结构中)或显式的,否则大多数值类型将被填充为至少32位。

预测空引用将消耗多少空间并不总是那么简单,但是如果它们是普通指针,则在x86平台上将消耗4个字节,在x64平台上将消耗8个字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM