2013-05-15 3 views
2

우리는 DB 데이터를 사용하여 자주 저장하기 위해 HttpRuntime Cache를 사용하는 웹 애플리케이션을 가지고 있습니다. 코드는 다음과 같습니다 여기
.Net의 Hashtable 객체가 사용하는 메모리

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을 캐시에 추가. 코드를 사용하여이 해시 테이블 객체가 취한 메모리를 찾는 방법 ..... 감사합니다.

+0

가능한 중복 [메모리에 객체의 크기를 얻는 방법?] (http://stackoverflow.com/questions/605621/ 메모리 사용 방법) –

답변

3

관리 객체의 크기를 가져올 방법이 없으며 구현마다 다릅니다.

이 자세한 내용은 링크를 참조하십시오 :

 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(); 

이가 나타납니다 : 해시 테이블이 초기화되기 직전과이 데이터로 채워 직후 당신이 GC.GetTotalMemory(false)를 사용하여 시도 할 수 있습니다 부정확 한 추정치를 들어 Size of a managed object

을 Hashtable이 초기화되면 8192 바이트가 메모리에 할당되고 64 개 요소에 메모리를 할당하여 요소 당 128 바이트를 할당하는 것으로 나타납니다. 65 번째 요소를 Hashtable에 추가하자마자 다른 64 개 요소에 대해 8192 바이트가 추가로 예약됩니다.

그것은 다른 시스템에서 다를 수 있습니다, 그것은 그 :)를 결정하는 CLR에게 달려

+0

정확히 무엇을 찾고 있는지 ..... 감사합니다. – Sunil

+0

우수! 내가 도울 수있어서 기뻐. – animaonline