微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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:

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

原文地址:https://www.jb51.cc/csharp/243396.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐