如何找出JVM上次收集垃圾的时间?

Jav*_*cky 2 java garbage-collection

我想找出JVM最后收集垃圾的时间.这可能吗?我怎么能找到?

mer*_*ike 7

这应该让你开始:

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());
    }
Run Code Online (Sandbox Code Playgroud)

对sunGcBean的强制转换可能无法移植到非sun JVM.您可以找到目标VM的特定于供应商的扩展,或者在监视程序线程中观察gcBean.getCollectionCount()的增加,该监视程序线程记录其发现更改时的当前时间.