C# .Net中哈希表对象使用的内存

C# .Net中哈希表对象使用的内存,c#,httpruntime.cache,C#,Httpruntime.cache,我们有一个web应用程序,它使用HttpRuntime缓存存储频繁使用的DB数据。代码片段是: public static void Add(string cacheName, Hashtable cacheValue) { System.Web.HttpRuntime.Cache.Add(cacheName, cacheValue, null, DateTime.Now.AddSeconds(60), TimeSpan.Zero, System.Web.Caching.CacheItemP

我们有一个web应用程序,它使用HttpRuntime缓存存储频繁使用的DB数据。代码片段是:

public static void Add(string cacheName, Hashtable cacheValue)
{
  System.Web.HttpRuntime.Cache.Add(cacheName, cacheValue, null, DateTime.Now.AddSeconds(60), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.High, null);
}

这里,哈希表对象从数据库接收数据并添加到HttpRuntime缓存。如何使用代码找出此哈希表对象占用的内存…谢谢。

无法获得托管对象的大小,它因实现而异

有关更多详细信息,请参阅此链接:

对于不准确的估计,您可以在哈希表初始化之前和填充数据之后尝试使用
GC.GetTotalMemory(false)

        Console.Write("How many entries would you like to store in the Hashtable?:");

        int hashTableEntries;
        int.TryParse(Console.ReadLine(), out hashTableEntries);

        var memBeforeHashInit = GC.GetTotalMemory(true);

        var hashTable = new Hashtable();

        for (int i = 0; i < hashTableEntries; i++)
            hashTable.Add(i, i);

        var memAfterHashInit = GC.GetTotalMemory(false);

        var diff = memAfterHashInit - memBeforeHashInit;

        Console.WriteLine("Memory used since startup: {0} bytes" +
            "\r\n" +
            "Hashtable entries: {1}" +
            "\r\n" +
            "Press any key to exit", diff, hashTableEntries);
        Console.ReadLine();
Console.Write(“您希望在哈希表中存储多少条?:”;
int哈希表条目;
int.TryParse(Console.ReadLine(),out hashTableEntries);
var memBeforeHashInit=GC.GetTotalMemory(true);
var hashTable=新的hashTable();
for(int i=0;i
看起来,一旦一个哈希表被初始化,就会在内存中分配8192个字节,它也会为其64个元素分配内存,每个元素分配128个字节。一旦将第65个元素添加到哈希表中,它就会为另外64个元素保留8192字节


在另一个系统上可能会有所不同,这取决于CLR的决定:)

卓越的可能重复!很高兴我能帮忙。