什么是java的等效于java的-verbose:gc命令行选项

时间:2010-10-14 14:15:20

标签: c# java .net performance garbage-collection

我正在写一个ASP.NET MVC应用程序,我看到一个似乎随机的表现来自我的一个动作。我最初的经验是,垃圾收集正在进行并暂停应用程序一段时间,但我似乎无法找到一个可以证明或反驳我的理论的按钮/开关。

对于没有java的人-verbose:gc是一个命令行开关,您可以将其传递给Java应用程序,该事件将在GC事件发生时打印出JVM以及需要多长时间。

我试图使用vs2010性能工具和JetBrains dotTrace,这两者都有点像使用热核武器来破解小螺母。

2 个答案:

答案 0 :(得分: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 / process:4180 start“4180是 进程ID
  4. 采取必要的行动
  5. 然后发出“PerfMonitor.exe stop”
  6. 获取报告的命令 “PerfMonitor.exe GCTime”。这将 生成报告并在中打开 浏览器
  7. 我还有blogged大致相同的

    HTH

答案 1 :(得分:0)

你的第一个猜测不应该是GC。对于所有正常工作负载,您不会注意到.NET中的GC。

GC没有跟踪开关,但如果您仍然认为GC应该受到责备,您可以查看performance counters