2011-02-07 22 views
2

我正在調試內存泄漏。我無法複製它,但是當程序在特定情況下運行時,我會以約60MB /小時的速度獲得穩定的泄漏。幾天後,當堆爲〜2GB並附加WinDbg時,我會進行轉儲。WinDbg - 看着System.Web.Compilation.BuildManager的ResultCache

!heapdump -stat
顯示有1.2GB的哈希表。 這大約是55%的堆。

!dumpheap -Type System.Collections.Hashtable + KeyCollection
給出153,080個Hashtable實例的地址。

!這些實例中的少數幾個的gcroot表明它們全都屬於Me.Logger擁有的Threads。

RSP:28f67e840:Root:0000000245edb7d0(Me.Logger)-> 
0000000245edb9d8(System.Threading.Thread)-> 
00000002459b9830(System.Runtime.Remoting.Contexts.Context)-> 
00000002459b9548(System.AppDomain)-> 
0000000245a1fed0(System.ResolveEventHandler)-> 
00000002259697a0(System.Web.Compilation.BuildManager)-> 
0000000245a20120(System.Web.Compilation.MemoryBuildResultCache)-> 
00000002459c2a48(System.Web.Caching.CacheMultiple)-> 
00000002459c2a70(System.Object[])-> 
00000002459c7e08(System.Web.Caching.CacheSingle)-> 
00000002459c9008(System.Web.Caching.CacheUsage)-> 
00000002459c9030(System.Object[])-> 
00000002459c9138(System.Web.Caching.UsageBucket)-> 
00000001b996fba8(System.Web.Caching.UsagePage[])-> 
00000001ae054388(System.Web.Caching.UsageEntry[])-> 
0000000251576590(System.Web.Caching.CacheEntry)-> 
00000002515761a0(System.Web.Mobile.MobileCapabilities)-> 
00000002515742c8(System.Collections.Hashtable)-> 
0000000251576548(System.Collections.Hashtable+KeyCollection) 

我不知道如何解釋這個輸出。看來System.Web.Compilation.BuildManager只有一個巨大的緩存。

BuildManager,MobileCapabilities,ResolveEventHandler - 我沒有在我的代碼庫中使用這些。

我是WinDbg的新手。我如何進一步調試?

我怎麼能看到什麼在哈希表? (SoS v2.0.50727所以不行!DumpCollection)。 我怎麼看到BuildManager的內容?

回答