我有内存泄漏并将其追踪到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没有动态创建类型,至少在我的代码中
答案 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
报告了这一情况