估计/计算内存中对象大小的好方法

时间:2010-09-28 21:58:23

标签: .net

假设我有对象Tom,它有类Person。

Class Person

String Name
DateTime BirthDate
String Role
Int32 Salary

如果它具有以下值,你能给我一个近似的内存大小:

姓名=汤姆。 BirthDate = 1/1/1990。角色=用户。薪水= 30000

您能否对我如何进行计算有所了解?

1 个答案:

答案 0 :(得分:2)

要获得真实数字,请使用CLR profiler。要以编程方式执行此操作,请使用sizeof(仅适用于值类型)。您也可以通过直接引用GC like this ...

来实现
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

long TotalBytes = StopBytes - StartBytes;
MessageBox.Show("Size is " + TotalBytes.ToString());