/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):
- 若传
--run-gc-before:广播「Running garbage collector…」并调用 System.gc()
- 广播「Creating a new heap dump summary, please wait…」
HeapDumpSummary.createNew() 抓取快照,失败则广播「An error occurred whilst inspecting the heap.」(红色)并返回
- 转为
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 |
跳过网络,只写本地文件 |
| 上传异常 |
回退为存盘并打印堆栈 |
相关条目