Después de ejecutar nuestra prueba de estrés en nuestro acceso a aplicaciones ASP.NET a servicios web internos, nuestro servidor de nivel medio (donde alojamos servicios web ASMX .NET 3.5) mostró cerca de 1GB de consumo de memoria..NET Memory Leak
Tras la revisión del volcado de memoria desde el servidor de nivel medio, he encontrado más de 1000 objetos de Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer a los que hace referencia el tiempo de ejecución de los mismos servicios web.
¿Esto está relacionado con la forma en que nuestros objetos personalizados se serializan/deserializan en la capa de servicios web? ¿Alguien podría arrojar más luz sobre esto? !
Cuando hice gcroot en algunos de estos objetos 1000, me dio la siguiente traza: (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.MemoryBuildResultCache) -> 103d115c (System.Web.Caching.CacheMultiple) -> 103d1174 (System.Object []) -> 103d2034 (System.Web.Caching.CacheSingle) -> 103d2080 (System.Collections.Hashtable) -> 1c24b97c (System.Collections.Hashtable + cubo []) -> 1c24b934 (System.Web.Caching.CacheEntry) -> 18363994 (System.Web.Services.Protocols. SoapServerType) -> 183639c4 (System.Collections.Hashtable) -> 1c24aa5c (System.Collections.Hashtable + cubo []) -> 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 (Sistema .Web.Compilation.MemoryBuildResultCache) -> 144631fc (System.Web.Caching.CacheMultiple) -> 14463214 (System.Object []) -> 14465088 (System.Web.Caching.CacheSingle) -> 144650d4 (Sistema .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 + cubo []) -> 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 (Sistema.Object []) -> 102d7b1c (System.Web.Caching.CacheSingle) -> 102d7b68 (System.Collections.Hashtable) -> 102d7bac (System.Collections.Hashtable + cubo []) -> 181ee124 (Sistema. Web.Caching.CacheEntry) -> 10350eac (System.Web.Services.Protocols.SoapServerType) -> 10350edc (System.Collections.Hashtable) -> 181ed260 (System.Collections.Hashtable + cubo []) -> 181ed148 (System.Web.Services.Protocols.SoapServerMethod) -> 181eb708 (Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer61)
Gracias BK
recomiendo encarecidamente mover a WCF. – Andrey
Me encantaría. Este es el código existente y hemos actualizado recientemente a ASP.NET 3.5 –