Изтичане на .NET памет

След провеждане на нашето стрес тестване на достъпа на нашето приложение ASP.NET до вътрешни уеб услуги, нашият сървър от средно ниво (където хостваме ASMX .NET 3.5 уеб услуги) показа близо 1 GB потребление на памет.

При прегледа на дъмпа на паметта от сървър от средно ниво, открих над 1000 обекта на Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer, посочени от самата среда за изпълнение на уеб услуги.

Това нещо свързано ли е с начина, по който нашите потребителски обекти се сериализират/десериализират в слоя на уеб услугите? Може ли някой да хвърли повече светлина върху това?

Когато направих !gcroot на някои от тези 1000 обекта, получих следната следа: (Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Storage.ConfigurationChangeFileWatcher)-> 1c4bb450(System.Threading.Thread)-> 18236aa0(System.Runtime .Remoting.Contexts.Context)-> 18236914(System.AppDomain)-> 10409dc4(System.ResolveEventHandler)-> 10409494(System.Web.Compilation.BuildManager)-> 10409f30(System.Web.Compilation.MemoryBuildResultCa che)-> 103d115c (System.Web.Caching.CacheMultiple)-> 103d1174(System.Object[])-> 103d2034(System.Web.Caching.CacheSingle)-> 103d2080(System.Collections.Hashtable)-> 1c24b97c(System.Collections. Хеш таблица +bucket[])-> 1c24b934(System.Web.Caching.CacheEntry)-> 18363994(System.Web.Services.Protocols.SoapServerType)-> 183639c4(System.Collections.Hashtable)-> 1c24aa5c(System. Колекции. Хеш таблица +bucket[])-> 1c24a458(System.Web.Services.Protocols.SoapServerMethod)-> 1c248ae4(Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer26)

(Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Storage.ConfigurationChangeFileWatcher)-> 1c5ac4b0(System.Threading.Thread)-> 1c52b5f0(System.Runtime.Remoting.Contexts.Context)-> 1c52b464(System.AppDomain)- > 18823880 (System.ResolveEventHandler)-> 18822f50(System.Web.Compilation.BuildManager)-> 188239e0(System.Web.Compilation.MemoryBuildResultCache)-> 144631fc(System.Web.Caching.CacheMultiple)-> 14463214(S ystem.Object[] )-> 14465088(System.Web.Caching.CacheSingle)-> 144650d4(System.Collections.Hashtable)-> 1446510c(System.Collections.Hashtable+bucket[])-> 1c5a580c(System.Web.Caching.CacheEnt ри)- > 109e6e34(System.Web.Services.Protocols.SoapServerType)-> 109e6e64(System.Collections.Hashtable)-> 1c5a4fcc(System.Collections.Hashtable+bucket[])-> 1c5a4a54(System.Web.Services .Protocols.SoapServerMethod )-> 1c5a44f4(Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer28)

(Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Storage.ConfigurationChangeFileWatcher)-> 108b38f0(System.Threading.Thread)-> 1c1155ec(System.Runtime.Remoting.Contexts.Context)-> 1c115460(System.AppDomain)- > 1030d348 (System.ResolveEventHandler)-> 1030ca18(System.Web.Compilation.BuildManager)-> 1030d4a0(System.Web.Compilation.MemoryBuildResultCache)-> 102d7ae4(System.Web.Caching.CacheMultiple)-> 102d7afc(Syste m.Object[] )-> 102d7b1c(System.Web.Caching.CacheSingle)-> 102d7b68(System.Collections.Hashtable)-> 102d7bac(System.Collections.Hashtable+bucket[])-> 181ee124(System.Web.Caching.CacheEntry) - > 10350eac(System.Web.Services.Protocols.SoapServerType)-> 10350edc(System.Collections.Hashtable)-> 181ed260(System.Collections.Hashtable+bucket[])-> 181ed148(System.Web.Services.Proto cols.SoapServerMethod )-> 181eb708(Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer61)

Благодаря BK


person BK Krish    schedule 28.07.2010    source източник
comment
Силно препоръчвам да преминете към WCF.   -  person Andrey    schedule 28.07.2010
comment
Много бих се радвал да. Това е съществуващ код и наскоро го актуализирахме до ASP.NET 3.5   -  person BK Krish    schedule 28.07.2010


Отговори (2)


Може да искате да опитате да инструментирате кода си с ANTS Memory Profiler от Red порта.

person Vitor Py    schedule 28.07.2010

Горещо бих ни препоръчал просто наречения .Net Memory Profiler от http://memprofiler.com/download.aspx.

Можете да използвате пълната версия за 14 дни безплатно.

Намерих го полезно за този тип решаване на проблеми. Ще ви покаже референтното дърво. Направете отстраняването на този тип проблеми наистина лесно.

person morechilli    schedule 24.08.2010