.NET对象的内存开销是多少?

rea*_*ers 35 .net c#

.NET中Object的内存开销是多少?我在谈论一个任意的简单对象......内部.NET工作或引用的开销:

var obj = new System.Object();
Run Code Online (Sandbox Code Playgroud)

obj在堆中占用了多少空间?

Jon*_*eet 43

我在博客文章"Of memory and strings"中谈到这一点.它是特定于实现的,但对于Microsoft .NET CLR v4,x86 CLR的每个对象开销为8个字节,而x64 CLR的每个对象开销为16个字节.

但是,最小大小分别为12和24个字节 - 当你开始存储有用信息时,只需要获得前4或8个字节的"空闲":)

(有关更多信息,请参阅博客文章.)

  • 成员变量可能还有填充以适合地址边界.该填充概念进一步使对象的存储器开销的计算复杂化.难怪C#从未为类型的实例变量引入sizeof运算符. (2认同)