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

是否有一个简单的函数调用来确定在运行的运行时中是否已启用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:

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

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...