测量在 GC 上花费的时间

2022-09-03 03:53:17

假设我正在测试一个 Java 服务器应用程序。我知道完成测试需要多少时间。现在我想知道在那次测试中在GC上花了多少钱。我该怎么做?


答案 1

我猜当GC(垃圾回收器)工作时,应用程序停止并在GC完成时恢复

我不认为这是一个安全的假设。是否确定垃圾回收器未与应用程序代码并行工作?

要测量收集垃圾所花费的时间,您可以查询垃圾回收器 MXBean

试试这个:

public static void main(String[] args)  {
    System.out.println("collectionTime = " + getGarbageCollectionTime());
}

private static long getGarbageCollectionTime() {
    long collectionTime = 0;
    for (GarbageCollectorMXBean garbageCollectorMXBean : ManagementFactory.getGarbageCollectorMXBeans()) {
        collectionTime += garbageCollectorMXBean.getCollectionTime();
    }
    return collectionTime;
}

答案 2

最简单的方法是在启动 JVM 时使用 和 选项。我认为它打印出了垃圾回收需要多长时间。-Xloggc-XX:-PrintGCTimeStamps

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


推荐