【问题标题】:How can I find out the time the JVM last garbage collected?如何找出 JVM 上次收集垃圾的时间?
【发布时间】:2011-03-22 21:40:40
【问题描述】:

我只想找出 JVM 上次收集垃圾的时间。这可能吗?我怎样才能知道?

【问题讨论】:

    标签: java garbage-collection


    【解决方案1】:

    这应该让你开始:

    import java.lang.management.GarbageCollectorMXBean;
    import java.lang.management.ManagementFactory;
    
    
        for (GarbageCollectorMXBean gcBean : ManagementFactory.getGarbageCollectorMXBeans()) {
            System.out.println(gcBean.getCollectionCount());
    
            com.sun.management.GarbageCollectorMXBean sunGcBean = (com.sun.management.GarbageCollectorMXBean) gcBean;
            System.out.println(sunGcBean.getLastGcInfo().getStartTime());
        }
    

    转换为 sunGcBean 可能无法移植到非 sun JVM。您可以找到目标 VM 的供应商特定扩展,或观察 gcBean.getCollectionCount() 在记录当前时间的看门狗线程中的增加。

    【讨论】:

      【解决方案2】:

      最简单的方法是使用 -verbose:gc 启动 Java 应用程序,这会将有关垃圾收集的信息转储到标准输出:

      java -verbose:gc MyProgram

      【讨论】:

      【解决方案3】:

      根据您运行的应用程序服务器,您可能会在管理控制台中获得所需的统计信息。垃圾收集统计数据通过 jmx 公开,几乎所有主要的应用程序服务器都有一个 jmx 控制台。否则我们可以使用 Jconsole 绑定到远程 jvm 并获取垃圾收集统计信息。 (连jconsole都会用到Jmx)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-28
        • 1970-01-01
        • 2021-12-26
        • 2011-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        相关资源
        最近更新 更多