Переполнение памяти: увеличивающееся количество Microsoft.CSharp.RuntimeBinder.Semantics
В настоящее время мы ищем утечки памяти в нашем приложении. Когда мы выполняем какую-либо операцию (загружаем и закрываем один проект внутри нашего приложения), мы знаем, что объем памяти всегда немного увеличивается.
Мы уже нашли много из них, но сейчас 10 + наиболее растущих классов (согласно нашему инструменту ANTS Memory Profiler 8.2):
Microsoft.CSharp.RuntimeBinder.Semantics.SYMTBL + KeyMicrosoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbolMicrosoft.CSharp.RuntimeBinder.Semantics.CONSTVALMicrosoft.CSharp.RuntimeBinder.Semantics.EXPRCONSTANTMicrosoft.CSharp.RuntimeBinder.Semantics.EXPRCLASSMicrosoft.CSharp.RuntimeBinder.Semantics.EXPRTYPEOFMicrosoft.CSharp.RuntimeBinder.Semantics.EXPRLISTMicrosoft.CSharp.RuntimeBinder.Semantics.MethWithInstMicrosoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResultsMicrosoft.CSharp.RuntimeBinder.Semantics.EXPRMEMGRPMicrosoft.CSharp.RuntimeBinder.Semantics.EXPRCALLMicrosoft.CSharp.RuntimeBinder.Semantics.EXPRWRAPMicrosoft.CSharp.RuntimeBinder.Semantics.AggregateDeclarationMicrosoft.CSharp.RuntimeBinder.Semantics.ScopeК сожалению, я не понимаю, что это такое, поэтому мне немного сложно найти, как / что я должен выпустить.
Я проверил дерево экземпляров, но оно работает с Microsoft.
Проблема в том, что когда мы выполняем «открытие / закрытие» проекта, мы проходим большую часть (большую часть) нашего кода.
РЕДАКТИРОВАТЬ Одна часть нашего приложения используетdynamic
Ключевое слово для некоторых ресурсов, оно может быть связано. Класс здесь не одноразовый, я должен сделать что-то особенное с ними?
РЕДАКТИРОВАТЬ 2
Я уверен, что это связано с моимdynamic
вещи, кажется, что C # создает кеш при использовании динамического. Но в настоящее время я не знаю, почему он растет (я загружаю одни и те же классы все время, и у меня всегда будет одна и та же сигнатура), и как это очистить.