For value types, use sizeof(object value)
For unmanaged objects, use Marshal.SizeOf(object obj)
Unfortunately, the two above will not get the dimensions of the referenced objects.
For a managed entity: There is no direct way to get the size of RAM that they use for managed entities, see: http://blogs.msdn.com/cbrumme/archive/2003/04/15/51326.aspx
Or alternatives:
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);
Source: http://blogs.msdn.com/b/mab/archive/2006/04/24/582666.aspx
Profiler
Using a profiler would be best.
source share