13

C# 引用消耗多少内存?引用是否与对象本身一样消耗内存?

4

3 回答 3

24

引用以指针的形式实现,因此在以 x86 模式(32 位)运行的应用程序中,引用为 4 个字节,而在 x64 模式(64 位)中,引用为 8 个字节。

由于引用只是指向对象的指针,因此无论它指向什么,或者即使它根本不指向任何东西(null),引用都是相同的大小。

于 2013-10-26T12:02:30.367 回答
14

引用使用它运行的平台的本机字大小。

即32位:32位。64 位:64 位。

所以不..您的对象的大小可以变化..参考将始终如上。

于 2013-10-26T12:02:21.350 回答
7

摘自C# 5.0 in a Nutshell: The Definitive Reference in page 22;

引用类型需要为引用和对象分别分配内存。对象消耗与其字段一样多的字节,加上额外的管理开销。精确的开销本质上是 .NET 运行时实现的私有开销,但开销至少为 8 个字节,用于存储对象类型的键,以及临时信息,例如多线程的锁定状态和用于指示它是否已被垃圾收集器从移动中修复。对对象的每个引用都需要额外的 4 或 8 个字节,具体取决于 .NET 运行时是在 32 位还是 64 位平台上运行。

于 2013-10-26T12:07:00.530 回答