内存中对象的大小

pis*_*hio 4 .net c#

可能重复:
如何在内存中获取对象大小?

是否有可能在运行时知道对象占用的内存?怎么样?具体来说,我想知道占用的RAM量.

pap*_*tis 15

对于值类型使用 sizeof(object value)

对于非托管对象使用 Marshal.SizeOf(object obj)

不幸的是,上面两个不会得到引用对象的大小.

对于托管对象:没有直接的方法来获取它们用于托管对象的RAM大小,请参阅:http://blogs.msdn.com/cbrumme/archive/2003/04/15/51326.aspx

或替代方案:

System.GC.GetTotalMemory

long StopBytes = 0;
foo myFoo;

long StartBytes = System.GC.GetTotalMemory(true);
myFoo = new foo();
StopBytes = System.GC.GetTotalMemory(true);
GC.KeepAlive(myFoo); // This ensure a reference to object keeps object in memory

MessageBox.Show("Size is " + ((long)(StopBytes - StartBytes)).ToString());
Run Code Online (Sandbox Code Playgroud)

资料来源:http://blogs.msdn.com/b/mab/archive/2006/04/24/582666.aspx

探查

使用分析器将是最好的.