2010-01-08 101 views
18

.NET是否有類似Java的垃圾回收日誌?我想將GC統計信息寫入生產應用程序中的日誌。谷歌沒有告訴我有用的東西,所以也沒有任何相關的問題。.NET是否有類似於Java的垃圾回收日誌?

謝謝

+0

此外,我需要在客戶機器上生成這些日誌。每隔一段時間我會收集日誌並分析GC性能(當gc運行時,花費了多少毫秒,沒有太多信息) – Shahbaz 2010-01-09 03:31:09

回答

6

GC統計數據可用作性能計數器。在perfmon中,它們顯示在「.NET CLR內存」類別下。您可以通過System.Diagnostics命名空間(PerformanceCounterXxx類)以編程方式訪問性能計數器,也可以使用Server Explorer創建方便的包裝器。

請注意,這些是統計並且不提供詳細的每對象日誌記錄。

3

當perf數據告訴你存在問題時,可以使用調試器(windbg)來查找泄漏。 !GCRoot命令可以讓你找出爲什麼沒有收集到內存。有關更多信息,請參見this blogpost

0

您可以使用Garbage Collection Notifications自行設置某種級別的GC日誌記錄。但請注意,如果您使用ConcurrentGC,這對於服務器端應用程序來說是典型的,那麼您只會收到停止全球GC的通知。所以它不像Java的等價物那麼完整,但它是一些東西。

也有相當多的GC相關信息可通過ETW記錄獲得。可能通過這種方式連接您自己的ETW偵聽器並提取信息,但我不知道預先做好的方法。