标准答案

  1. 线程转储多次采样可判断线程是否长期阻塞、等待锁或忙循环。
  2. 堆转储能分析对象类型、数量和引用链,但可能带来暂停和磁盘压力。
  3. GC 日志要保留收集器、暂停、堆前后占用、原因和并发阶段。
  4. 取证文件要脱敏、限制访问并与发布、流量和业务指标建立时间关联。

题目解析

线程转储回答线程在等待什么,堆转储回答哪些对象仍存活以及由谁引用,GC 日志回答分配、回收和暂停趋势。三者作用不同,应该与发布、流量和业务指标对齐。

取证动作也会消耗 CPU、磁盘和暂停时间。高峰期应先选择低影响采样、控制频率和文件大小,堆转储尤其要评估生产影响和敏感数据。

一次快照只能说明一个时刻。多次线程转储和堆快照、GC 趋势和 profile 才能区分瞬时热点、持续泄漏和请求放大。

常见误区

  • 误区:高峰期无保护地频繁 dump。改正:定义取证频率、影响评估和停止条件,优先使用低影响采样。
  • 误区:堆转储上传到公共位置。改正:按敏感数据处理,限制访问、加密传输和保留期限。
  • 误区:只看一条 GC 日志。改正:观察连续趋势,并关联流量、分配速率、暂停和 P99。

作者信息