gpt4 book ai didi

java - 你能在 Java 中获得基本的 GC 统计信息吗?

转载 作者:IT老高 更新时间:2023-10-28 20:46:26 25 4
gpt4 key购买 nike

我想让一些长时间运行的服务器应用程序定期输出 Java 中的一般 GC 性能数字,比如 Runtime.freeMemory() 等 GC 等价物。比如完成的周期数、平均时间等。

我们的系统在客户机器上运行,怀疑配置错误的内存池会导致过多的 GC 频率和长度 - 我认为定期报告基本 GC Activity 通常是好的。

是否有任何独立于平台的方式来做到这一点?

编辑:我特别想在运行时将此数据输出到系统日志(控制台);这不是我想连接到 JVM 的东西,就像 JConsole 或 JVisualVM 一样。

Edit2:MX bean 看起来像我想要的 - 有没有人有一个获得其中之一的工作代码示例?

最佳答案

这是一个使用 <a href="http://java.sun.com/javase/6/docs/api/java/lang/management/GarbageCollectorMXBean.html" rel="noreferrer noopener nofollow">GarbageCollectorMXBean</a> 的示例打印出 GC 统计信息。大概您会定期调用此方法,例如使用 <a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html" rel="noreferrer noopener nofollow">ScheduledExecutorService</a> 进行调度.

public void printGCStats() {
long totalGarbageCollections = 0;
long garbageCollectionTime = 0;

for(GarbageCollectorMXBean gc :
ManagementFactory.getGarbageCollectorMXBeans()) {

long count = gc.getCollectionCount();

if(count >= 0) {
totalGarbageCollections += count;
}

long time = gc.getCollectionTime();

if(time >= 0) {
garbageCollectionTime += time;
}
}

System.out.println("Total Garbage Collections: "
+ totalGarbageCollections);
System.out.println("Total Garbage Collection Time (ms): "
+ garbageCollectionTime);
}

关于java - 你能在 Java 中获得基本的 GC 统计信息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com