如何从JVM分析和监视gc.log垃圾收集器日志文件

时间:2012-01-12 12:25:36

标签: java garbage-collection jvm

我想知道可视化分析和监控java gc.log文件的最佳方法是什么。

GCViewer是迄今为止我发现的最有趣的工具,但我想知道是否有更好或更好的解决方案来监控多个远程gc.log文件。

3 个答案:

答案 0 :(得分:2)

我认为分析垃圾收集器日志的最有效方法是查看输出本身。我们的生产服务器全部使用Concurrent Mark Sweep Collector运行,我使用选项-Xloggc:$GCLOGFILE -XX:+PrintGCDetails运行日志,如果环境遇到问题我

  1. 首先通过点击“Full GC”和
  2. 来检查Full GC的数量
  3. 检查CMS的数量和频率,并在收集阶段查找错误消息(通常以“未能......”开头)。
  4. 我通常也会查看线程列表并检查垃圾收集器消耗的CPU时间量。我通过使用-p <java-pid>参数运行top来执行此操作,然后按“H”,这样您就可以看到消耗最多cpu时间的pids。然后可以将其与线程转储匹配,以查看gc线程是否是最耗时的线程。每个线程都有一个pid显示在线程转储中,它是十六进制的,可以匹配顶部的pids。

    查看GC消耗的cpu次数并将其与日志输出相匹配非常重要。我曾多次尝试过GCViewer,但从未真正从GC-Data的可视化显示中获得有用的提示。

答案 1 :(得分:1)

您可以使用JDK中包含的jconsole工具。或者,当您运行Java应用程序时,可以使用参数“-verbose:gc”。

答案 2 :(得分:0)

我认为您可以使用选项在日志文件中记录gc活动:

-verbose:gc -XX:+ PrintGCTimeStamps -XX:+ PrintGCDetails -Xloggc:gc.log

您可以使用HPJmeter软件

来利用此日志