2010-07-28 16 views
5

Nachdem wir unseren Stresstest auf unseren ASP.NET-Anwendungszugriff auf interne Webdienste durchgeführt hatten, zeigte unser Mid-Tier-Server (wo wir ASMX .NET 3.5-Webdienste hosten) nahezu 1 GB Speicherverbrauch..NET Speicherleck

Nach der Überprüfung des Speicherabbilds vom Mid-Tier-Server habe ich über 1000 Objekte von Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer gefunden, auf die von der Web-Services-Laufzeit selbst verwiesen wird.

Ist dies etwas damit, wie unsere benutzerdefinierten Objekte in der Web-Services-Schicht serialisiert/deserialisiert werden? Könnte jemand mehr Licht auf dieses Thema werfen? !

Als ich gcroot tat auf einige dieser 1000 Objekte, bekam ich die folgende Spur: (Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Storage.ConfigurationChangeFileWatcher) -> 1c4bb450 (System.Threading.Thread) - > 18236aa0 (System.Runtime.Remoting.Contexts.Context) -> 18.236.914 (System.AppDomain) -> 10409dc4 (System.ResolveEventHandler) -> 10.409.494 (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) -> 18.363.994 (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) -> 18.823.880 (System.ResolveEventHandler) -> 18822f50 (System.Web.Compilation.BuildManager) -> 188239e0 (System .Web.Compilation.MemoryBuildResultCache) -> 144631fc (System.Web.Caching.CacheMultiple) -> 14.463.214 (System.Object []) -> 14.465.088 (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.Objekt []) -> 102d7b1c (System.Web.Caching.CacheSingle) -> 102d7b68 (System.Kollektionen.Hashtabelle) -> 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)

Dank BK

+0

i empfehlen dringend zu WCF zu bewegen. – Andrey

+0

würde ich gerne. Dies ist bestehender Code und wir haben kürzlich auf ASP.NET 3.5 aktualisiert –

Antwort

1

Ich würde dringend empfehlen, uns von der einfach genannten . Net Memory Profiler von http://memprofiler.com/download.aspx.

Sie können die Vollversion für 14 Tage kostenlos nutzen.

Ich habe es nützlich für diese Art von Problemlösung gefunden. Es zeigt Ihnen den Referenzbaum. Das Reparieren dieser Art von Problemen ist wirklich einfach.