В настоящее время мы выполняем некоторые утечки памяти в нашем приложении, выполняя некоторую операцию (загружая и закрывая один проект внутри нашего приложения), мы знаем, что увеличение памяти всегда немного.
Мы уже много их нашли, но теперь 10 + наиболее растущие классы (согласно нашему инструменту, ANTS Memory Profiler 8.2):
- Microsoft.CSharp.RuntimeBinder.Semantics.SYMTBL + Key
- Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol
- Microsoft.CSharp.RuntimeBinder.Semantics.CONSTVAL
- Microsoft.CSharp.RuntimeBinder.Semantics.EXPRCONSTANT
- Microsoft.CSharp.RuntimeBinder.Semantics.EXPRCLASS
- Microsoft.CSharp.RuntimeBinder.Semantics.EXPRTYPEOF
- Microsoft.CSharp.RuntimeBinder.Semantics.EXPRLIST
- Microsoft.CSharp.RuntimeBinder.Semantics.MethWithInst
- Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults
- Microsoft.CSharp.RuntimeBinder.Semantics.EXPRMEMGRP
- Microsoft.CSharp.RuntimeBinder.Semantics.EXPRCALL
- Microsoft.CSharp.RuntimeBinder.Semantics.EXPRWRAP
- Microsoft.CSharp.RuntimeBinder.Semantics.AggregateDeclaration
- Microsoft.CSharp.RuntimeBinder.Semantics.Scope
К сожалению, я не знаю, что это такое, поэтому мне немного сложно найти, как/что я должен отпустить.
Я проверил дерево экземпляров, но он полностью подходит к материалам microsoft.
Проблема в том, что когда мы выполняем "Open/close" проекта, мы проходим много (большинство) нашего кода.
EDIT Одна часть нашего приложения использует ключевое слово dynamic
для некоторых ресурсов, оно может быть связано. Класс здесь не одноразовый, должен ли я делать с ними что-то особенное?
РЕДАКТИРОВАТЬ 2
Я уверен, что это связано с моим материалом dynamic
, похоже, что С# создает кеш при использовании динамического. Но в настоящее время я понятия не имею, почему он растет (я загружаю одни и те же классы все время, и я буду иметь точно такую же подпись все время), и как очистить это.