Утечка памяти в классах CLR

У меня утечка памяти, и я проследил ее до этого поля внутри CLR:

Microsoft.CSharp.RuntimeBinder.RuntimeBinder.s_instance.m_semanticChecker.globalSymbolContext.GlobalSymbols.tableGlobal.dictionary

Это можно посмотреть в отладчике, используя эту спецификацию:

((Microsoft.CSharp.RuntimeBinder.Semantics.LangCompiler) (Microsoft.CSharp.RuntimeBinder.RuntimeBinder.s_instance.m_semanticChecker)). GlobalSymbolContext.GlobalSymbols.tableGlobal.dictionary

Во время исполнения заявки этот словарь неограниченно растет.

Есть идеи, для чего именно используется это поле и почему оно может расти?

UPD нет динамического создания типов, по крайней мере в моем коде

1 ответ

Решение

Лучший ответ, который я нашел до сих пор:
Проблема возникает где-то вокруг свойства Excel VSTO Range.Style (используется динамический тип данных).
Каждый раз, когда этот кусок кода

range.Style == null

работает, это заставляет связыватель потреблять больше памяти.
Но если я переписать этот код, как это

(Style)range.Style == null

тогда проблема исчезнет.

UPD сообщил об этом в Microsoft https://connect.microsoft.com/VisualStudio/feedback/details/861770/memory-leak-when-using-excel-add-in-api

Другие вопросы по тегам