获取花在垃圾收集器上的时间

Get time spent in garbage collector

我想知道如何获取 GC 花费的时间。我认为这是可能的,因为 newrelic 提供了有关 jvm 监控的信息。 谢谢

对于热点 jvm,使用 -XX:+PrintGCDetails 启动 jvm,它将开始记录 gc 事件,其中包括花费的时间

如果你想将它重定向到文件

-Xloggc:/home/someuser/app/logs/jvm/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails

http://www.oracle.com/technetwork/java/javase/community/vmoptions-jsp-140102.html

如果你想在你的程序中捕获信息,那么你可以使用 MXBeans 来实现。喜欢

List<GarbageCollectorMXBean> list = ManagementFactory
                .getGarbageCollectorMXBeans();
        for (GarbageCollectorMXBean bean : list) {
            System.out.println(bean.getCollectionTime());
        }

More Information.

您可以使用 JVM 发行版随附的 jstat 工具。 运行jstat -gc <pid>。它将显示与您的问题相关的以下值:

  • GCT栏中:自JVM启动后GC花费的总秒数
  • FGCT 列中:自 JVM 启动后 Full GC 花费的总秒数
  • YGCT 列中:自 JVM 启动后 Young Gen GC 花费的总秒数