Microsoft.CSharp.RuntimeBinder.Semantics DLR内存泄漏?

时间:2013-12-24 12:57:13

标签: c# .net memory-leaks windbg

我遇到了在堆上显示Microsoft.CSharp.RuntimeBinder.Semantics命名空间下的大量对象的问题。

我们推测这与以下代码有关:

if (m_DictionaryXXX.TryGetValue(participant.Id, out callback))
{
  //Some implementation using callback
}

TryGetValue现在被视为动态表达式。 在调试时,我们注意到调用TryGetValue的线程在TryGetValue调用上挂起。

重要的是要注意四件事。

  • m_DictionaryXXX是ConcurrentDictionary。
  • 参与者是一个动态对象,从IEnumerable返回。
  • 动态对象本身被实例化为匿名类型。
  • 在测试的所有转储中,GC堆大小从800-1100MB
  • 变化

由于stackoverflow的身体限制,请参阅下面的codetidy链接以获取更多数据,以及 windbg输出。

http://codetidy.com/7622/

提前致谢。

0 个答案:

没有答案