字节对象的大小以字节为单位

时间:2014-01-09 07:10:39

标签: c# java memory-management dictionary garbage-collection

我想知道字典项的大小(以字节为单位)。我怎么能这样做?有预定义的方法吗?我看到一个类似的问题正在回答说要使用GC.TotalMemory方法获得差异。但在这里我不能Gc.KeepAlive这个对象。请指教。在使用字典之前和之后计算差异的问题是不可能的,因为总存储器不仅包括该字典的存储器而且还包括其他几个线程的存储器。请为此提供替代方法。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

long StopBytes = 0;

// Declare your dictionnary
Dictionary<string, int> myDictionary;

// Get total memory before create your dictionnary
long StartBytes = System.GC.GetTotalMemory(true);

// Initialize your dictionnary
myDictionary = new Dictionary<string, int>();

// Get total memory after create your dictionnary
StopBytes = System.GC.GetTotalMemory(true);

// This ensure a reference to object keeps object in memory
GC.KeepAlive(myFoo); 

// Calcul the difference , and that all :-)
MessageBox.Show("Size is " + ((long)(StopBytes - StartBytes)).ToString());

此处提供更多信息 - &gt; http://blogs.msdn.com/b/mab/archive/2006/04/24/582666.aspx