C# .Net中哈希表对象使用的内存
我们有一个web应用程序,它使用HttpRuntime缓存存储频繁使用的DB数据。代码片段是: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
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的决定:)卓越的可能重复!很高兴我能帮忙。