2010-10-14 106 views
6

我正在寫一個ASP.NET MVC應用程序,我看到了一個我的行爲似乎隨機的表現。我最初的想法是,垃圾收集正在踢進並暫停應用程序一段時間,但我似乎無法找到一個按鈕/開關來證明或反駁我的理論。Java的-verbose:gc命令行選項的.NET等價物是什麼?

對於沒有java的人-verbose:gc是一個命令行開關,您可以將它傳遞給java應用程序,當GC事件發生時需要將JVM打印出來並需要多長時間。

我試圖使用vs2010性能工具和JetBrains dotTrace這兩個有點像使用熱核武器來破解一個小螺母。

+0

的GC花費的時間不說,容易界定。大多數GC不需要停止的程序,因爲.net在客戶端應用程序上使用併發GC。 – CodesInChaos 2010-10-14 14:27:44

回答

6

在.NET 4.0中,Windows的事件跟蹤(ETW)爲您提供了正在查找的信息。這是一個專門用於GC的程序。

FYI ETW速度非常快,並內置到內核中。隨着ETW你應該能夠得到的信息是這樣 alt text

alt text

而得到這個信息沒有從BCL團隊被稱爲PerfMonitor

這裏的工具都在使用的步驟工具來獲取信息GC

  1. 啓動CMD或PowerShell中以管理員 ,這需要收集ETW 跟蹤
  2. 啓動要 跟蹤
  3. 發出命令「PerfMonitor.exe /過程:4180開始」的應用程序,其中4180 進程ID
  4. 做了必要的行動
  5. 然後發出「PerfMonitor .exe stop「
  6. 獲取報告的命令 」PerfMonitor.exe GCTime「。這將 生成一份報告,並在瀏覽器

打開它我也有blogged在大約相同的

HTH

+0

這就更好了.. ta。 – 2010-10-14 15:00:33

0

你的第一個猜測不應該是GC。對於所有正常的工作負載,您不會注意到.NET中的GC。

GC沒有跟蹤開關,但如果您仍然認爲GC應該受到責備,您可以查看performance counters

+0

謝謝,這只是工作。你完全正確,這與GC沒什麼關係,不是那麼容易:-) – 2010-10-14 14:45:03

相關問題