【问题标题】:Does .NET have something similar to Java's garbage collection log?.NET 是否有类似于 Java 的垃圾收集日志的东西?
【发布时间】:2011-01-03 02:18:15
【问题描述】:

.NET 是否有类似于 Java 的垃圾收集日志的东西?我想将 GC 统计信息写入生产应用程序的日志中。谷歌没有告诉我任何有用的东西,所以似乎也没有任何相关的问题。

谢谢

【问题讨论】:

  • 另外,我需要在我的客户机器上生成这些日志。每隔一段时间我会收集日志并分析 GC 性能(gc 运行时,花了多少毫秒,仅此而已)

标签: c# .net logging garbage-collection


【解决方案1】:

GC 统计信息可用作性能计数器。在 perfmon 中,它们显示在“.NET CLR 内存”类别下。您可以通过 System.Diagnostics 命名空间(PerformanceCounterXxx 类)以编程方式访问性能计数器,或使用服务器资源管理器创建方便的包装器。

请注意,这些是统计数据,不提供每个对象的详细日志记录。

【讨论】:

    【解决方案2】:

    当性能统计数据告诉您存在问题时,您可以使用调试器 (windbg) 来查找漏洞。 !GCRoot 命令允许您找出未收集内存的原因。请参阅this blogpost 了解更多信息

    【讨论】:

      【解决方案3】:

      您可以使用Garbage Collection Notifications 自己设置某种级别的 GC 日志记录。但请注意,如果您使用的是服务器端应用程序的典型 ConcurrentGC,您只会收到 stop-the-world GC 的通知。所以它不像 Java 等价物那样完整,但它是一些东西。

      还有相当多的 GC 相关信息可通过 ETW 日志记录获得。可能可以连接您自己的 ETW 侦听器并以这种方式提取信息,但我不知道有一种预先烘焙的方法可以做到这一点。

      【讨论】:

        猜你喜欢
        • 2011-08-01
        • 2010-10-28
        • 1970-01-01
        • 2011-05-01
        • 2011-01-07
        • 1970-01-01
        • 2013-02-02
        • 2013-01-13
        • 1970-01-01
        相关资源
        最近更新 更多