После проведения нашего стресс-тестирования доступа нашего приложения ASP.NET к внутренним веб-службам наш сервер среднего уровня (где мы размещаем веб-службы ASMX .NET 3.5) показал потребление памяти, близкое к 1 ГБ.
При просмотре дампа памяти с сервера среднего уровня я обнаружил более 1000 объектов Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer, на которые ссылается сама среда выполнения веб-служб.
Связано ли это с тем, как наши пользовательские объекты сериализуются/десериализуются на уровне веб-сервисов? Может ли кто-нибудь пролить больше света на это?
Когда я выполнил !gcroot для некоторых из этих 1000 объектов, я получил следующую трассировку: .Remoting.Contexts.Context) -> 18236914 (System.AppDomain) -> 10409dc4 (System.ResolveEventHandler) -> 10409494 (System.Web.Compilation.BuildManager) -> 10409f30 (System.Web.Compilation.MemoryBuildResultCache) -> 103d115c (System.Web.Caching.CacheMultiple)-> 103d1174(System.Object[])-> 103d2034(System.Web.Caching.CacheSingle)-> 103d2080(System.Collections.Hashtable)-> 1c24b97c(System.Collections.Hashtable +bucket[])-> 1c24b934(System.Web.Caching.CacheEntry)-> 18363994(System.Web.Services.Protocols.SoapServerType)-> 183639c4(System.Collections.Hashtable)-> 1c24aa5c(System.Collections.Hashtable +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 (System.Object [] )-> 14465088(System.Web.Caching.CacheSingle)-> 144650d4(System.Collections.Hashtable)-> 1446510c(System.Collections.Hashtable+bucket[])-> 1c5a580c(System.Web.Caching.CacheEntry)- > 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(System.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.Protocols.SoapServerMethod )-> 181eb708(Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer61)
Спасибо БК