我们已经找到了很多,但现在,10个最多的类是(根据我们的工具,ANTS Memory Profiler 8.2):
> Microsoft.CSharp.RuntimeBinder.Semantics.SYMTBL键
> 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
不幸的是,我不是这样,所以我有点难以找到我应该如何释放.
我检查了实例树,但它一直与微软的东西.
问题是,当我们做一个项目的“开放/关闭”时,我们经历了很多(大部分)我们的代码.
编辑我们的一个应用程序的一部分使用动态关键字的一些资源,它可能被链接.这里的课不是一次性,我应该和他们做些特别的事吗?
编辑2
我很确定这与我的动态内容相关,似乎C#在使用动态时创建缓存.但是目前我不知道为什么它会增长(我一直加载相同的类,我一直都有完全相同的签名),也不知道如何清除这个.
解决方法
根据您的应用,最好的建议是仔细考虑如果您可以设计您的解决方案,以避免动态.
这里有一些有用的动态用例:https://msdn.microsoft.com/en-us/library/dd264736.aspx
鉴于您真的需要使用动态,我建议您调整代码,并找出哪些部分是最多的内存消耗.
事实上,使用动态增加您的内存消耗基于事实,它需要执行各种lookups,但是有一个内存不足的例外,你需要使用很多未知类型的大量动态变量.
对于未知类型的调用方法有很多不同的ways,测量和调整瓶颈是要走的路.
PS:另外,发布一些代码片段有很多帮助.