测量在 GC 上花费的时间
2022-09-03 03:53:17
假设我正在测试一个 Java 服务器应用程序。我知道完成测试需要多少时间。现在我想知道在那次测试中在GC上花了多少钱。我该怎么做?
假设我正在测试一个 Java 服务器应用程序。我知道完成测试需要多少时间。现在我想知道在那次测试中在GC上花了多少钱。我该怎么做?
我猜当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;
}
最简单的方法是在启动 JVM 时使用 和 选项。我认为它打印出了垃圾回收需要多长时间。-Xloggc
-XX:-PrintGCTimeStamps
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html