/spark gc

基本信息

属性 值
命令名 gc
别名 无
来源 GcMonitoringModule(GcMonitoringModule.java:69)
参数 无
Tab 补全 无(build() 未设 tabCompleter)

查询 JVM 垃圾回收器的累计统计。

功能

先回复「Calculating GC statistics…」,然后遍历 GarbageCollectorStatistics.pollStatsSubtractInitial(platform.getStartupGcStatistics()) 的结果,对每个收集器输出一段。

「启动基线」是本命令的关键设计:SparkPlatform 在 enable() 时把 System.gc() 之外的启动期 GC 数据快照存为 startupGcStatistics(异步轮询一次),而本命令用 pollStatsSubtractInitial 做差值,因此显示的是服务器正常运营期间的增量,而非 JVM 启动至今的累计值。

对每个收集器:

  • 若 collectionCount == 0:只输出 <名字> collector: 与「0 collections」,不输出耗时
  • 否则输出:
    • 平均单次回收耗时 = collectionTime / collectionCount,以 DF 格式化为 <值> ms avg
    • 总回收次数 = collectionCount,输出为「<值> total collections」
    • 平均回收间隔 = (serverUptime - collectionTime) / collectionCount,格式化为 <值>(秒级,经 FormatUtil.formatSeconds 处理)

其中 serverUptime = System.currentTimeMillis() - platform.getServerNormalOperationStartTime(),即服务器正常运营时长,而非 JVM 启动时长。

数值

数值名 定义 来源
平均回收耗时 collectionTime / collectionCount GcMonitoringModule
平均回收间隔 (serverUptime - collectionTime) / collectionCount GcMonitoringModule
服务器运营时长 now - serverNormalOperationStartTime SparkPlatform.getServerNormalOperationStartTime
启动期基线 平台 enable 时轮询一次 GarbageCollectorStatistics.pollStats() SparkPlatform.enable

交互

触发 行为
无任何收集器上报数据 遍历结果为空,回复空报告(开头为「Garbage Collector statistics」标题)
收集器存在但零回收 逐个列出收集器名与「0 collections」

相关条目