/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」 |
相关条目
- /spark gcmonitor - GC 的实时事件监控,与本命令的累计统计互补
- /spark heapsummary - 堆内存构成,解释 GC 压力的根因
- Spark API -
Spark.gc()可程序化读取同样的收集器统计