加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 内存溢出:越来越多的Microsoft.CSharp.RuntimeBinder.Sem

发布时间:2020-12-15 06:25:39 所属栏目:百科 来源:网络整理
导读:在我们的应用程序中,我们正在搜索一些内存泄漏,当进行一些操作(在我们的应用程序中加载和关闭一个项目)时,我们知道内存总是增加一点. 我们已经找到了很多,但现在,10个最多的类是(根据我们的工具,ANTS Memory Profiler 8.2): Microsoft.CSharp.RuntimeBinder
在我们的应用程序中,我们正在搜索一些内存泄漏,当进行一些操作(在我们的应用程序中加载和关闭一个项目)时,我们知道内存总是增加一点.

我们已经找到了很多,但现在,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:另外,发布一些代码片段有很多帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读