Утечка памяти в .NET - PullRequest
       23

Утечка памяти в .NET

5 голосов
/ 28 июля 2010

После проведения нашего стресс-тестирования доступа наших приложений ASP.NET к внутренним веб-службам наш сервер среднего уровня (где мы размещаем веб-службы ASMX .NET 3.5) показал потребление памяти, близкое к 1 ГБ.

После проверки дампа памяти сервера среднего уровня я обнаружил более 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.MemoryBuildResultCache) -> 103d115c (System.Web.Caching.CacheMultiple) -> 103d1174 (System.Object []) -> 103d2034 (System.Web.Caching.CacheSingle) -> 103d2080 (System.Collections.Hashtable) -> 1c24b97c (System.Collections.Hashtable + ковш []) -> 1c24b934 (System.Web.Caching.CacheEntry) -> 18363994 (System.Web.Services.Protocols.SoapServerType) -> 183639c4 (System.Collections.Hashtable) -> 1c24aa5c (System.Collections.Hashtable + ковш []) -> 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 + ковш []) -> 1c5a580c (System.Web.Caching.CacheEntry) -> 109e6e34 (System.Web.Services.Protocols.SoapServerType) -> 109e6e64 (System.Collections.Hashtable) -> 1c5a4fcc (System.Collections.Hashtable + ковш []) -> 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 + ковш []) -> 181ee124 (System.Web.Caching.CacheEntry) -> 10350eac (System.Web.Services.Protocols.SoapServerType) -> 10350edc (System.Collections.Hashtable) -> 181ed260 (System.Collections.Hashtable + ковш []) -> 181ed148 (System.Web.Services.Protocols.SoapServerMethod) -> 181eb708 (Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer61)

Спасибо BK

Ответы [ 2 ]

1 голос
/ 24 августа 2010

Я бы настоятельно рекомендовал нам просто именованный .Net Memory Profiler из http://memprofiler.com/download.aspx.

Вы можете бесплатно пользоваться полной версией в течение 14 дней.

Я нашел это полезным для решения проблем такого типа. Он покажет вам справочное дерево. Сделать решение таких проблем действительно просто.

1 голос
/ 28 июля 2010

Возможно, вы захотите использовать свой код с помощью ANTS Memory Profiler от Red Gate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...