【问题标题】:Know of any Java garbage collection log analysis tools? [closed]知道任何 Java 垃圾收集日志分析工具吗? [关闭]
【发布时间】:2009-02-12 15:35:09
【问题描述】:

我正在寻找一种工具或脚本,可以从我的网络应用程序中获取控制台日志,解析出垃圾收集信息并以有意义的方式显示它。

我正在使用带有以下标志的 Sun Java 1.4.2 JVM 启动:

-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails

日志输出如下所示:

54.736: [Full GC 54.737: [Tenured: 172798K->18092K(174784K), 2.3792658 secs] 257598K->18092K(259584K), [Perm : 20476K->20476K(20480K)], 2.4715398 secs]

如果我有一个工具可以直观地绘制垃圾收集趋势图,那么理解数百个此类日志条目会容易得多。

【问题讨论】:

标签: java performance logging garbage-collection


【解决方案1】:

gcviewer 做你想做的事。

【讨论】:

  • gcviewver 于 2008 年发布。它能否正确解析 Sun JVM 1.6 日志?对我来说,它会生成很多NumberFormatExceptions,但会显示一些信息。问题是:我可以相信它吗?
  • 到目前为止,我认为您可以信任它。
  • 我真的建议从github.com/chewiebug/GCViewer获取最新版本
【解决方案2】:

IBM 的 GC 工具包完全符合您的要求。

https://www.ibm.com/developerworks/java/jdk/tools/gcmv/

我不确定它是否与 Sun 的 JVM 中的 GC 日志兼容。

【讨论】:

  • 这个并不完美,但它可以满足我的需要。它似乎面向 IBM JDK,但主要适用于 java GC 日志格式。有一些信息没有被解析出来,但大部分数据都在那里。谢谢!
  • IBM 现在提供了一套捆绑在一个非常大的包中的工具“IBM Support Assistant”www-01.ibm.com/support/docview.wss?uid=swg27023689 对于 GC 日志分析,您必须使用“垃圾收集和内存可视化器 (GCMV)”
  • IBM 还提供“用于 Java 垃圾收集器 (PMAT) 的 IBM 模式建模和分析工具”(最后更新于 2012 年 11 月)ibm.com/developerworks/community/groups/service/html/…
【解决方案3】:

我认为有些人正在添加 Java 探针,这些探针并不能真正解析垃圾收集日志,如问题所述...

我尝试过其他人(gcviewer、gchisto、IBM 的),我发现用于分析 GC 日志的最佳工具是 HPjmeter

它主要用于 HP-UX JVM,但它通常也适用于 Sun JVM,并且效果很好。


(来源:xebia.com

【讨论】:

  • 我正在使用 HPjmeter 4.1.00.00,但无法使用它打开 Sun JDK 日志文件。它们具有 braveterry 在他的问题中提到的格式。
  • 它“通常”适用于 Sun JVM,但我在读取一些 CMS GC 消息时遇到问题,我必须过滤这些消息才能加载文件。日志来自哪个 JDK 版本?哪些 GC 参数用于启动 JVM?
  • Sun JDK 1.6u27,-verbose:gc -XX:+PrintGCDetails。但问题更简单:*.log 文件未列在程序可用过滤器中,因此 HPjmeter 无法打开它。当我重命名它时,HPjmeter 失败。 GC产生的文件怎么命名?
  • 1) 更改文件类型组合框以显示所有文件 2) 使用 -Xloggc: 而不是 -verbose:gc
  • 我收到“文件中没有有用的数据”错误,即使在重命名文件 .hprof 之后也是如此。问题当然不是文件名,因为我也可以通过输入名称来打开 .log 文件。
【解决方案4】:

我尝试了一个在线工具http://gceasy.io,它可以读取我的sun jdk 1.8 gc log。

【讨论】:

  • 似乎也适用于 JRockit。
【解决方案5】:

比 jconsole 更好的是visualvm,它是由 Sun 免费开发和分发的。它有一个名为 gchisto 的 GC 分析插件,可能会对您有所帮助。

编辑:抱歉,我没有看到您的 JDK 1.4.2 要求。在那种情况下,visualvm 不会帮助你,唉。

【讨论】:

  • GC Histo 很好。但他们也应该将堆大小添加到分析中。
  • @fred-o: visualvm 看起来不错,但是怎么打开里面的GC日志呢?
【解决方案6】:

我发现可以同时处理 IBM 和 Hotspot JVM 日志并将它们可视化的最强大工具是 IBM 的 PMAT: https://www.ibm.com/developerworks/mydeveloperworks/groups/service/html/communityview?communityUuid=22d56091-3a7b-4497-b36e-634b51838e11

我发现它比 IBM Support Assistant 中的工具更快并且提供更多详细信息。 它正在不断更新,最后是 12 年 7 月。

但是,使用策略 CMS 解析日志似乎有一些问题,但希望可以解决。

PrintGCStats 也很不错,提供了很好的统计数据,但随着时间的推移,它不能用于可视化,这需要一些工作。

【讨论】:

    【解决方案7】:

    我使用YourKit java profiler,它可以让您测量这类事情以及更多,但使用它自己的格式而不是分析日志。它可以在 Java 5 下做更多的事情,但应该在 1.4 下工作。

    【讨论】:

      【解决方案8】:

      试试 Sun 的VisualGC。 JDK 4 和 5 版本可以让您很好地了解 eden、generational 和 perm 空间中正在发生的事情。您需要添加一个 JAR 并获取一个 PID,而 Bob 是您的叔叔。

      【讨论】:

      • VisualGC 也可作为 VisualVM 中的图形插件使用,但它只能“实时”工作,据我所知,它无法处理 GC 日志文件。
      • 是的,我现在也推荐 Visual VM。这是我三年前写的;世界变了。我不会重新审视每个答案并保持最新状态。
      • 我同意。我只想指出,问题是关于“离线”分析 GC 日志文件,而 VisualGC 是“实时”工具。
      【解决方案9】:

      几年前,John Coomes(Hotspot GC 小组)发布了 PrintGCStats,这是一个 awk 脚本,用于“汇总有关垃圾收集的统计信息,特别是 gc 暂停时间总计、平均值、最大值和标准偏差。”。该脚本的副本托管在 java.net 上:http://java.net/projects/printgcstats

      【讨论】:

        【解决方案10】:

        jconsole 可以帮助你很多,但我认为它仅限于 Java 5 及更高版本。有一次我听到 SUN 的某个人在我们大学演讲,他说 Java 6 的垃圾收集器比旧的垃圾收集器要好很多,旧的垃圾收集器几乎一直需要复杂的调整来处理大型应用程序。 Java 6 GC 在 SMP 上的扩展性似乎要好得多。

        【讨论】:

        • jconsole是否支持离线日志文件分析?我看到只有 Connect 菜单。
        【解决方案11】:

        VisualVM 的 gchisto 插件不起作用 https://gchisto.dev.java.net/

        我有一个包含 jdk1.6 的 printgc 的所有详细信息的文件,但找不到读取该文件的工具。 以前使用 jdk1.5 我们使用 HPjmeter 效果很好,但现在使用 jdk1.6 就不行了

        尝试了以下方法:IBM Pattern Modeling and Analysis Tool for Java Garbage Collector -- 它无法识别该文件。 GCCollector 不工作,它继续读取文件进行分析。

        【讨论】:

          【解决方案12】:

          试试 JProbe Freeware(Eclipse 插件)之类的分析工具怎么样。

          【讨论】:

          • 您无法分析您的生产环境。加载具有相关场景的测试环境是 gc/memory 调优的第一步,但随后您必须通过 GC 日志分析验证调优在生产中是否具有预期效果
          猜你喜欢
          • 2014-02-19
          • 2016-06-14
          • 2010-10-28
          • 1970-01-01
          • 2011-08-01
          • 1970-01-01
          • 2011-04-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多