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

c# – 如何检测并发GC是否在.Net中运行

发布时间:2020-12-15 08:23:33 所属栏目:百科 来源:网络整理
导读:是否有一个简单的函数调用来确定在运行的运行时中是否已启用Concurrent GC?我们有一个异构环境,我们需要记录正在使用的模式,以便我们确定需要修改哪些系统. 我意识到我可以调查exe.config并手动检查它,我只是想知道是否有一个属性坐在某个地方暴露这些信息
是否有一个简单的函数调用来确定在运行的运行时中是否已启用Concurrent GC?我们有一个异构环境,我们需要记录正在使用的模式,以便我们确定需要修改哪些系统.

我意识到我可以调查exe.config并手动检查它,我只是想知道是否有一个属性坐在某个地方暴露这些信息而不必进行黑客攻击.

解决方法

可悲的是,看起来并没有一种方法,如果我希望在这里看到它:System.Runtime.GCSettings ..

除非你有充分的理由最好留下并发垃圾收集(作为默认值).

通常,唯一关心这一点的是托管CLR的非托管应用程序(例如SQL Server或IIS).

您的应用程序是否可以通过编程方式更改exe.config中的gcConcurrent?如果没有,就像你说的那样,从配置中读取值是不那么强硬的方式(恕我直言).

从来没有,我做了一些研究,从.Net 4开始你可以使用ETW to detect garbage collection ETW events:

Event tracing for Windows (ETW) is a tracing system that supplements
the profiling and debugging support provided by the .NET Framework.
Starting with the .NET Framework 4,07001
capture useful information for analyzing the managed heap from a
statistical point of view. For example,the GCStart_V1 event,which is
raised when a garbage collection is about to occur,provides the
following information:

>正在收集哪一代对象.>什么触发了垃圾收集.>垃圾收集类型(并发或非并发).

(编辑:李大同)

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

    推荐文章
      热点阅读