/spark heapsummary

基本信息

属性 值
命令名 heapsummary
别名 无
来源 HeapAnalysisModule.heapSummary(HeapAnalysisModule.java:60)
参数 --save-to-file、--run-gc-before
Tab 补全 TabCompleter.completeForOpts(arguments, "--save-to-file", "--run-gc-before")

导出堆内存构成摘要(不是完整 dump),用于找出哪些对象类型占用了堆。

功能

执行顺序(HeapAnalysisModule.heapSummary):

  1. 若传 --run-gc-before:广播「Running garbage collector…」并调用 System.gc()
  2. 广播「Creating a new heap dump summary, please wait…」
  3. HeapDumpSummary.createNew() 抓取快照,失败则广播「An error occurred whilst inspecting the heap.」(红色)并返回
  4. 转为 SparkHeapProtos.HeapData 后二选一输出:
    • 默认上传:POST 到 bytebin(媒体类型 MediaTypes.SPARK_HEAP_MEDIA_TYPE),成功则广播「Heap dump summmary output:」+ 可点击的 viewerUrl + key 链接
      • 注意:源码里 summmary 是三个 m,属原文拼写
    • --save-to-file:写本地文件

上传失败时同样回退存盘(与 profiler 的 handleUpload 同构)。

与 heapdump 的区别

heapsummary heapdump
产物 堆类型分布摘要(proto SparkHeapProtos.HeapData) 完整堆快照
内存占用 低 极高(等于堆大小)
生成方式 HeapDumpSummary.createNew() HeapDump.dumpHeap(file, liveOnly)
默认输出 上传到查看器 直接写本地文件(仅在指定压缩时再上传处理)
可压缩 否 是

数值

数值名 值 来源
存盘文件名 heapsummary-<yyyy-MM-dd_HH.mm.ss>.sparkheap platform.resolveSaveFile("heapsummary", "sparkheap"),HeapAnalysisModule.java:120
上传媒体类型 MediaTypes.SPARK_HEAP_MEDIA_TYPE HeapAnalysisModule.heapSummary
文件名时间戳格式 yyyy-MM-dd_HH.mm.ss SparkPlatform.DATE_TIME_FORMATTER

交互

触发 行为
不带 flag 先 System.gc() 之外直接抓取,上传并给出查看器链接
--run-gc-before 抓取前强制一次 System.gc(),输出会排除已回收对象
--save-to-file 跳过网络,只写本地文件
上传异常 回退为存盘并打印堆栈

相关条目