CLR类中的内存泄漏

时间:2012-01-06 12:27:00

标签: .net 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 个答案:

答案 0 :(得分:4)

到目前为止我找到的最佳答案:
问题发生在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#tabs

报告了这一情况