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